Fan*_*oos 5 hibernate criteria-api
我认为这是一个简单的问题,虽然我不知道如何解决它.
在spring/Hibernate应用程序中,我需要显示标准执行的查询.
我知道我可以使用show_sql属性并使用log4j或任何其他日志框架记录查询,但我需要的是更高级别的日志记录.
我有这样的方法
public void searchIntegrationClient(IntegrationClientSearchCommand integrationClientSearchCommand,PartialList<IntegrationClient> partialList) {
Session session = getSession();
Criteria pageCriteria=session.createCriteria(IntegrationClient.class);
if(StringUtil.isNotEmpty(integrationClientSearchCommand.getNameCmd())){
pageCriteria.add(Restrictions.like("name", integrationClientSearchCommand.getNameCmd(), MatchMode.START));
}
//adding ordering alphabetically
pageCriteria.addOrder(Order.asc("name"));
pageCriteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
List<IntegrationClient> list = (List<IntegrationClient>)pageCriteria.list();
partialList.setPartialResultList(list);
Criteria countCriteria=session.createCriteria(IntegrationClient.class);
if(StringUtil.isNotEmpty(integrationClientSearchCommand.getNameCmd())){
countCriteria.add(Restrictions.like("name", integrationClientSearchCommand.getNameCmd(), MatchMode.START));
}
countCriteria.setProjection(Projections.rowCount());
partialList.setTotalNumberOfRecords(((Integer)countCriteria.uniqueResult()).intValue());
releaseSession(session);
}
Run Code Online (Sandbox Code Playgroud)
我需要在执行criteria.list之前显示将要执行的查询?
条件api中是否有任何实用程序类来显示查询,就像我想要的一样?
Thnx提前
我不知道JPA Criteria API中的任何实用程序类.但是有可能在hibernate持久性级别上显示SQL语句.
将以下行添加到persistence.xml文件中:
<properties>
<property name="hibernate.show_sql" value="true" />
</properties>
Run Code Online (Sandbox Code Playgroud)
如果您使用的是log4j,还可以将org.hibernate.type的日志记录级别设置为TRACE,这将在日志中显示更详细的信息.将这些行添加到log4j-config(当然需要一些名为'FILE'的适配器):
<category name="org.hibernate.type">
<priority value="TRACE"/>
<appender-ref ref="FILE"/>
</category>
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助...
| 归档时间: |
|
| 查看次数: |
14452 次 |
| 最近记录: |