【问题标题】:How to retrieve all entity with different column value?如何检索具有不同列值的所有实体?
【发布时间】:2015-01-10 10:18:30
【问题描述】:

在以下条件查询中

Criteria criteria = createLogRecordCriteria(maxId, playerId, playerStatus, userCategory, from, to);
criteria.setFirstResult(offset);
criteria.setMaxResults(limit);
criteria.setProjection(Projections.distinct(Projections.property("player")));
List lst = criteria.list(); 
return lst;

我只检索不同 players 的集合,但我需要检索所有具有不同 player 值的实体。如何通过criteria完成?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    相信this 是您正在搜索的查询。

    对于以下查询:

    从表 t 中选择 t 其中 t.player IN(选择不同的 t.player 从表 t );

    如果 DetachedCriteria 是一个可行的选项,则可以将 subCriteria 传递给 mainCriteria,如下所示(前提是 subCriteria 应定义为 DetachedCriteria):

    Criteria subCriteria = Criteria.forClass(Table.class);
            subCriteria.setProjection(Projections.distinct(Projections.property("player")));
            			
        
            Criteria mainCriteria = createLogRecordCriteria(maxId, playerId, playerStatus, userCategory, from, to);
            mainCriteria.add(Property.forName("t.player").in(subCriteria));
            
        //adding the extra restrictions provided in the Question.
        mainCriteria.setFirstResult(offset);
            mainCriteria.setMaxResults(limit);
        
            List lst = mainCriteria.list(); 
            return lst;

    如果没有,你必须得到'sub-criteria'的结果,然后将相同的(以Object[]或Collection的形式)作为参数传递给

    > mainCriteria.add(Property.forName("t.player").in(Result_Of_subQuery));
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多