为了账号安全,请及时绑定邮箱和手机立即绑定

获取条件查询的 JPQL/SQL 字符串表示

获取条件查询的 JPQL/SQL 字符串表示

慕标琳琳 2022-11-02 10:28:58
如何使用 parmetervalue 获取条件查询的 SQL 字符串表示形式?我试过这个,但它返回一个没有参数值的字符串给我:String QueryString = 'SELECT * FROM CUSTOMERS WHERE lastname = ?'query = entityManager.createNativeQuery(QueryString);query.setParameter(1, "toto");System.out.print(query.unwrap(JpaQuery.class).getDatabaseQuery().getSQLString());但返回“SELECT * FROM CUSTOMERS WHERE lastname = ?” 而不是“SELECT * FROM CUSTOMERS WHERE lastname = 'toto'”
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

如果它可以帮助其他人,那么解决方案是:


String QueryString = 'SELECT * FROM CUSTOMERS WHERE lastname = ?';

Query query = entityManager.createNativeQuery(QueryString); 

Session session = entityManager.unwrap(JpaEntityManager.class).getActiveSession();  

DatabaseQuery databaseQuery = query.unwrap(org.eclipse.persistence.jpa.JpaQuery.class).getDatabaseQuery();

DatabaseRecord recordWithValues= new DatabaseRecord();


query.setParameter(1, "toto"); 

recordWithValues.add(new DatabaseField(Integer.toString(1)), "toto");


databaseQuery.prepareCall(session, recordWithValues); 

String sqlStringWithArgs = databaseQuery.getTranslatedSQLString(session, recordWithValues);


System.out.print(sqlStringWithArgs);


====SELECT * FROM CUSTOMERS WHERE lastname = 'toto'====


查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信