Получение строковых представлений JPQL / SQL для запроса критериев - PullRequest
0 голосов
/ 30 апреля 2019

Как получить строковые представления 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());

Но возвращает "ВЫБЕРИТЕ * ОТ КЛИЕНТОВ ГДЕ фамилия =? "вместо "ВЫБРАТЬ * ОТ КЛИЕНТОВ ГДЕ lastname = 'toto'"

1 Ответ

0 голосов
/ 02 мая 2019

Спасибо @GrootC за помощь в поиске решения.

Если это поможет другим людям, вот решение:

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