1 回答
TA贡献1802条经验 获得超6个赞
以下是使用普通 JDBC 重现它的方法:
如何重现它
使用此表
CREATE TABLE T (
ID NUMBER(7),
CONSTRAINT pk PRIMARY KEY (ID)
);
在内部使用Connection.prepareStatement(String, String[])重载,例如 jOOQ 所做的:
try (Connection c = dbSetup.getConnection()) {
try (PreparedStatement s = c.prepareStatement(
"insert into \"TEST\".\"T\" (\"ID\") values (?)", new String[] { "ID" })) {
s.setInt(1, 1);
s.execute ();
}
}
解决方法
不要引用架构名称:
try (Connection c = dbSetup.getConnection()) {
try (PreparedStatement s = c.prepareStatement(
"insert into TEST.\"T\" (\"ID\") values (?)", new String[] { "ID" })) {
s.setInt(1, 1);
s.execute ();
}
}
完全避免资格:
try (Connection c = dbSetup.getConnection()) {
try (PreparedStatement s = c.prepareStatement(
"insert into \"T\" (\"ID\") values (?)", new String[] { "ID" })) {
s.setInt(1, 1);
s.execute ();
}
}
使用 jOOQ 中的解决方法:
您可以使用关闭模式限定
Settings.renderSchema
您可以使用关闭标识符的引用
Settings.renderQuotedNames
添加回答
举报