【问题标题】:hibernate how to show the criteria queries休眠如何显示条件查询
【发布时间】:2011-06-06 09:46:27
【问题描述】:

我认为这是一个简单的问题,虽然我不知道如何解决。

在 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);
}

我需要在执行criteria.list 之前显示将要执行的查询吗?

criteria api 中是否有任何实用程序类来显示我想要的查询?

提前谢谢

【问题讨论】:

    标签: hibernate criteria-api


    【解决方案1】:

    我不知道 JPA Criteria API 中的任何实用程序类。但是有可能在休眠持久性级别上显示 SQL 语句。

    将以下行添加到您的 persistence.xml 文件中:

       <properties>
          <property name="hibernate.show_sql" value="true" />
       </properties>
    

    如果您使用 log4j,您还可以将 org.hibernate.type 的日志记录级别设置为 TRACE,这将在您的日志中显示更详细的信息。将这些行添加到您的 log4j-config 中(当然,您需要有一些名为 'FILE' 的适配器):

    <category name="org.hibernate.type">
        <priority value="TRACE"/>
        <appender-ref ref="FILE"/>
    </category>
    

    我希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-08
      • 2011-04-13
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多