0

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

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

4

1 回答 1

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

于 2012-10-17T10:07:16.527 回答