jpa 2.0 对具有 2 个 ID 的类的注释,指向两个不同的表

Posted

技术标签:

【中文标题】jpa 2.0 对具有 2 个 ID 的类的注释,指向两个不同的表【英文标题】:jpa 2.0 annotation to a class with 2 ID pointing to two different tables 【发布时间】:2016-09-20 10:13:30 【问题描述】:

我有这 3 个实体 E1、E2、E3。 我想知道我必须如何注意我的 E3 类有 2 个主键,每个主键都指向具有附加字段的不同表。

@Entity
public class E1 extends RAP
    /**
     * 
     */


@Entity
public abstract class E2
    /**
     * 
     */

E3 类有 2 个主键指向 e1 和 e2。

@Entity
public class E3 extends RAP
    @Id
    @ManyToOne  
    @JoinColumn(name = "e1_id")
    private E1 e1;

    @Id
    @ManyToOne
    @JoinColumn(name = "e2_id")
    private E2 e2;

    private Double myfield1;
    private Double myfield2;

但是有一个问题。像这样……

This class has a composite primary key. It must use an ID class.

所以我想在不使用@Embedded 实体的情况下使用一些注释

【问题讨论】:

你不应该有 2 个主键,使用嵌入式,如果你只想索引字段以快速访问,或者约束没有重复值,你可以用其他方法实现这个,但是每个JPA 应该只有一个 ID 字段 你能告诉我这个其他方法吗 定义一个@IdClass 如消息所示... 【参考方案1】:

Here 您有一个示例,说明如何在多个列上指定约束,以及如何声明表之间的关系,还请查看this 以获取有关 jpa 2.0 中索引的参考,以及与 2.1 的主要区别。

您的问题看起来像是分层模型的完美候选者,这个link 展示了如何定义和使用这种模型的示例。

如果你能解释一下你想要归档的内容,也许我们可以找到更具体的解决方案。

【讨论】:

以上是关于jpa 2.0 对具有 2 个 ID 的类的注释,指向两个不同的表的主要内容,如果未能解决你的问题,请参考以下文章