使用 HQL 和单独的 IdClass 的复合键查询

Composite key query using HQL and separate IdClass

我有一个用复合键定义的休眠实体,在列上使用 id class 和 id annoation。工作正常。但是我现在想做一个

Select mt 
from MyTable mt 
where (mt.id, mt.column2) in (:myListOfCompositeKeys)

当我定义如下实体(不使用 embeddedId)时,使用 HQL 的语法是什么。

@Entity
@IdClass(MyKey.class)
@Table(name = "MY_TABLE")
public class MyTable implements Serializable {
    @Column(name = "ID")
    @Id
    private Long id;
    @Column(name = "Column2")
    @Id
    private Long column2;

或者我是否需要使用 embeddedId,如果需要,那么 HQL 的语法是什么?

如果您使用 @EmbededId,您将必须重写 equalshashCode 方法,HQL 如下所示。

SELECT mt
FROM MyTable mt
WHERE mt.id 
IN(:listOfKeys)