jav*_*ats 33 orm jpa eclipselink
我希望在开发期间将EclipseLink生成的SQL输出到控制台.但是,我只能使用日志级别FINE来执行此操作.我有一个由许多类组成的复杂域模型,因为EclipseLink输出其对整个模型的分析,因此当日志详细程度在FINE级别时,部署需要相当多的时间.
有没有办法获得SQL而不诉诸日志级别FINE(像Hibernate一样)?
jba*_*ndi 58
将以下属性放在您的persistence.xml:
 <property name="eclipselink.logging.level.sql" value="FINE"/>
 <property name="eclipselink.logging.parameters" value="true"/>
后者很有用,因此显示了参数的值.
另一种方法是使用log4jdbc或log4jdbc-remix.
Von*_*onC 22
根据这个帖子,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" />
但可能需要一些其他设置.
正如下面的Martin文档所述," EclipseLink/Examples/JPA/Logging "记录了这些属性.
Tom*_*asz 11
要在运行时获取特定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
| 归档时间: | 
 | 
| 查看次数: | 33652 次 | 
| 最近记录: |