【发布时间】:2018-02-01 01:22:43
【问题描述】:
将变量绑定到本机查询时出错。 EclipseLink(JPA 2.1)
String sql = "ALTER ROLE ?1 WITH ENCRYPTED PASSWORD 'xxx'"; //(not working)
//String sql = "ALTER ROLE ? WITH ENCRYPTED PASSWORD 'xxx'"; (not working)
Query query = em.createNativeQuery(sql);
String text = txtUsername.getText();
query.setParameter(1, text);
em.getTransaction().begin();
int executeUpdate = query.executeUpdate();
em.getTransaction().commit();
内部异常:org.postgresql.util.PSQLException:错误:“$1”处或附近的语法错误 职位:12 错误代码:0 线程“AWT-EventQueue-0”中的异常 javax.persistence.PersistenceException: 异常 [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException 呼叫:改变角色?使用加密密码“xxx” bind => [1个参数绑定] 查询:DataModifyQuery(sql="ALTER ROLE ? WITH ENCRYPTED PASSWORD 'xxx'") 内部异常:org.postgresql.util.PSQLException:错误:“$1”处或附近的语法错误 职位:12 错误代码:0 呼叫:改变角色?使用加密密码“xxx”
【问题讨论】:
-
JDBC中的一般是纯'?',没有'1'
-
如果这是个问题,回答“可能是”。结果是什么?
-
不工作:String sql = "ALTER ROLE ? WITH ENCRYPTED PASSWORD 'xxx'"
-
如果这是 JDBC 驱动程序基本上说您不能将参数放在 SQL 的那部分,我不会感到惊讶。许多不允许在 SELECT 子句或 FROM 子句中使用参数,例如
标签: java postgresql jpa eclipselink hibernate-native-query