【问题标题】:Converting HQL 'in' restriction to Criteria将 HQL 'in' 限制转换为 Criteria
【发布时间】:2011-11-10 14:30:48
【问题描述】:

我有一个这样的查询:

Query query = session.createQuery("from table1 c where c.colummewhatever =:value and (select p.colummewhatever from table2 p where c.fkidcolumme=p.idcolumme) in (:listPColummewhatever) ");

有没有办法将in 限制转换为Criteria

【问题讨论】:

    标签: java hibernate hql criteria


    【解决方案1】:

    在我看来,这个查询可以使用简单的连接重写:

    from Table1 c inner join c.table2 p
    where c.colummewhatever =:value 
    and p.colummewhatever in (:listPColummewhatever)
    

    现在用 Criteria 翻译这个 HQL 查询要容易得多。

    这当然假设您在 Table1 和 Table2 之间有一个关联,但您应该有一个。

    【讨论】:

    【解决方案2】:

    使用 Criteria API 应该是这样的......

    DetachedCriteria dc = new DetachedCriteria.forClass(Table1.class,"c");
    dc.createAlias("table2","p")
    dc.add(Restrictions.in("p.colFoo",yourListFoo);
    dc.add(Restrictions.eq("c.col",value);
    
    List<Table1> = dc.getExecutableCriteria(session).list();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多