簡體   English   中英

獲取條件查詢的JPQL / SQL字符串表示形式

[英]Getting the JPQL/SQL String Representations for a Criteria Query

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

感謝@GrootCfor幫助我找到解決方案。

如果它有助於其他人在這里解決方案:

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'====

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM