eclipse - 在 eclipse 的 toplink 中显示生成的 SQL

标签 eclipse eclipselink toplink oas show-sql

我在 eclipse 中使用 EclipseLink 库(在开发时)并部署在 TopLink 上,我需要显示生成的 sql 语句。

我正在使用以下 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>

我知道它应该显示生成的sql语句,但事实并非如此。

最佳答案

要查看 JPA 查询的 SQL,您可以启用 FINE 或更低级别的日志记录。

要在运行时获取特定查询的 SQL,您可以使用 DatabaseQuery API。

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

此 SQL 将包含 ?对于参数。要使用参数翻译 SQL,您需要一个包含参数值的 DatabaseRecord。

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

来源:How to get the SQL for a Query

关于eclipse - 在 eclipse 的 toplink 中显示生成的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4255541/

相关文章:

eclipse - 加载了不兼容的 JavaHl 库

jsf - 如何使用 Joda-Time 通过 EclipseLink 将 UTC 区域中的日期/时间插入 MySQL?

jpa - 当目标有复合键时@OneToMany 关系?

eclipse - Blender 附加组件的 PyDev 和 Eclipse 设置

java - 尝试将 HeaderView 添加到 listView android 时出现 ClassCastException

java - 在 Eclipse 中打开 ant 文件时出现 AntSecurityException

java - 如何使用 JPA 和 EclipseLink 对 2 个(或更多)数据库进行命名 native 查询

java - 使用JPA/Toplink批量插入

hibernate - 陷阱和实际用例 : Toplink, Hibernate、Eclipse Link、Ibatis

java - Toplink JPA 继承 - 摘要/详细关系