【问题标题】:HQL Query Having group of column in IN clauseHQL查询在IN子句中有一组列
【发布时间】:2012-10-16 13:30:45
【问题描述】:

我需要将下面的 SQL 查询转换为 HQL 查询。

select * from table where (column1, column2, column3) in (('A','B','C'),('D','E','F'));

【问题讨论】:

  • 好的。在这种情况下,您最好阅读docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch16.html,然后在遇到问题时报告。
  • @Alex 该链接提供了有关使用子查询的行值构造函数语法的信息。下面提到的代码也适用于 ID,但如果我必须为非键列或部分键列设置 IN 子句,它将不起作用。

标签: hibernate


【解决方案1】:

如果 IN 子句包含 ID,则下面提到的代码可以正常工作,但如果我必须为非键列或部分键列设置 IN 子句,它将不起作用。

List ids = new ArrayList<SomeEntityId>(2);
ids.add( new SomeEntityId(1,12) );
ids.add( new SomeEntityId(10,23) );
ids.add( new SomeEntityId(10,22) );
Query query=s.createQuery( "from SomeEntity e where e.id in (:idList)" );
query.setParameterList( "idList", ids );
List list=query.list();

但是,如果我将 HQL 创建为“来自 SomeEntity e where (column1, column2)in (:idList)”,则它不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-17
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2014-02-12
    • 2015-12-31
    相关资源
    最近更新 更多