使用HQL和单独的IdClass进行组合键查询

时间:2015-05-07 08:27:27

标签: java hibernate hql

我有一个用复合键定义的hibernate实体,在列上使用id类和id annoation。工作良好。但是我现在想做一个composite key query

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语法是什么?

1 个答案:

答案 0 :(得分:2)

如果您使用@EmbededId,则必须覆盖equalshashCode方法,而HQL将如下所示。

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