EclipseLink: How to get the SQL translated with the arguments for a Query?
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 FreeJava-based (JDBC) data connectivity to SaaS, NoSQL, and Big Data. Download Now.
The 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 '?'
Connect any Java based application to your SaaS data. Over 100+ Java-based data source connectors.
Published at DZone with permission of Michael Schnell , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
{{ parent.title || parent.header.title}}
{{ parent.tldr }}
{{ parent.linkDescription }}
{{ parent.urlSource.name }}