【问题标题】:Composite key query using HQL and separate IdClass使用 HQL 和单独的 IdClass 的复合键查询
【发布时间】:2015-07-17 16:59:15
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果你这样做 entityManager.find(entityClass, id);使用类型 if id = MyKey 就可以了。
  • 不幸的是,@nicearma 仅限于 HQL

标签: java hibernate hql


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多