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

如何使用 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'”


慕标琳琳
浏览 73回答 1
1回答

Cats萌萌

如果它可以帮助其他人,那么解决方案是: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'====
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java