将以下属性放入您的 persistence.xml :
persistence.xml
<property name="eclipselink.logging.level.sql" value="FINE"/> <property name="eclipselink.logging.parameters" value="true"/>
后者很有用,因此显示了参数的值。
另一种方法是使用 log4jdbc 要么 log4jdbc-混音 。
要在运行时获取特定Query的SQL,可以使用DatabaseQuery API。
Query query = em.createNamedQuery("findMe"); Session session = em.unwrap(JpaEntityManager.class).getActiveSession(); DatabaseQuery databaseQuery = ((EJBQueryImpl)query).getDatabaseQuery(); databaseQuery.prepareCall(session, new DatabaseRecord()); String sqlString = databaseQuery.getSQLString();
这个SQL会包含什么?用于参数。要使用参数转换SQL,您需要具有参数值的DatabaseRecord。
DatabaseRecord recordWithValues= new DatabaseRecord(); recordWithValues.add(new DatabaseField("param1"), "someValue"); String sqlStringWithArgs = databaseQuery.getTranslatedSQLString(session, recordWithValues);
资源: 如何获取查询的SQL
据称,EclipseLink的日志生成似乎很难设置 的 这个帖子 强> 。
它提到了一个 persistence.xml 您可以调整日志级别的文件:
<property name="eclipselink.weaving" value="static" /> <property name="eclipselink.logging.level.sql" value="FINEST" /> <property name="eclipselink.logging.level" value="FINEST" /> <property name="eclipselink.logging.level.cache" value="FINEST" />
但可能需要一些其他设置。
如 马丁 文件 下面 ,“ 的EclipseLink /实施例/ JPA /记录 “记录那些属性。