HQL查询在IN子句中具有列组

时间:2012-10-16 13:30:45

标签: hibernate

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

  

从表中选择*,其中(column1,column2,column3)   (( 'A', 'B', 'C'),( 'd', 'E', 'F'));

1 个答案:

答案 0 :(得分:0)

如果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)”,它就不起作用。