Show generated SQL in toplink in eclipse

2019-07-17 02:16发布

I am using EclipseLink libraries in eclipse (at dev time) and deploy on TopLink, I need to show the generated sql statement.

I am using the following persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="myPUnit" transaction-type="JTA">
        <provider>
            oracle.toplink.essentials.PersistenceProvider
        </provider>
        <jta-data-source>jdbc/dcds</jta-data-source>
        <properties>
            <property name="toplink.cache.shared.default" value="false"/>
            <property name="toplink.logging.level" value="FINE" />
        </properties>
    </persistence-unit>
</persistence>

I know it should show generated sql statements, but this is not the case.

2条回答
Explosion°爆炸
2楼-- · 2019-07-17 03:09

To see the SQL for a JPA Query you can enable logging on FINE or lower.

To get the SQL for a specific Query at runtime you can use the DatabaseQuery API.

Session session = em.unwrap(JpaEntityManager).getActiveSession(); 
DatabaseQuery    databaseQuery = ((EJBQueryImpl)query).getDatabaseQuery(); 
databaseQuery.prepareCall(session, new DatabaseRecord()); 
String sqlString = databaseQuery.getSQLString();

This SQL will contain ? for parameters. To get the SQL translated with the arguments you need a DatabaseRecord with the parameter values.

Session session = em.unwrap(JpaEntityManager).getActiveSession();
DatabaseQuery databaseQuery = ((EJBQueryImpl)query).getDatabaseQuery();
String sqlString = databaseQuery.getTranslatedSQLString(session, recordWithValues);

Source: How to get the SQL for a Query

查看更多
Root(大扎)
3楼-- · 2019-07-17 03:21

As a workaround, find generated SQLs here: app_serv_home\j2ee\home\log\oc4j\log.xml see: http://m-hewedy.blogspot.com/2010/11/workaround-to-find-generated-sql-on-oas.html

查看更多
登录 后发表回答