EclipseLink: How to get the SQL translated with the arguments for a Query?
Join the DZone community and get the full member experience.
Join For FreeThe documentation at the EclipseLink Wiki is not very helpful:http://wiki.eclipse.org/EclipseLink/FAQ/JPA#How_to_get_the_SQL_for_a_Query.3F
It says: “To get the SQL translated with the arguments you need a DatabaseRecord with the parameter values.“.
// BEGIN Snippet from the Wiki Session session = em.unwrap(JpaEntityManager).getActiveSession(); DatabaseQuery databaseQuery = ((EJBQueryImpl)query).getDatabaseQuery(); String sqlString = databaseQuery .getTranslatedSQLString(session, recordWithValues); // END Snippet from the Wiki
But where to get the recordWithValues variable? Actually the solution is hard to find, but simple: databaseQuery.getTranslationRow()
// This does the trick... String sqlString = databaseQuery .getTranslatedSQLString(session, databaseQuery.getTranslationRow()); // ... to replace the '?'
Published at DZone with permission of Michael Schnell, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Trending
-
Incident Response Guide
-
Building and Deploying Microservices With Spring Boot and Docker
-
Demystifying SPF Record Limitations
-
Security Challenges for Microservice Applications in Multi-Cloud Environments
Comments