使用 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,您将必须重写 equals
和 hashCode
方法,HQL 如下所示。
SELECT mt
FROM MyTable mt
WHERE mt.id
IN(:listOfKeys)
我有一个用复合键定义的休眠实体,在列上使用 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,您将必须重写 equals
和 hashCode
方法,HQL 如下所示。
SELECT mt
FROM MyTable mt
WHERE mt.id
IN(:listOfKeys)