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 的类的注释,指向两个不同的表的主要内容,如果未能解决你的问题,请参考以下文章

C++ - 具有链表和一次执行一个函数的类的程序

g++不能对具有虚拟方法的类的实例的运行时大小进行更多优化吗?

如何在 JPA 2.0 中自动检测实体

使用 JPA 2.1、EclipseLink、JSF 2.0 的日志表

添加带有 JPA 注释的现有方法签名的接口会破坏 Eclipselink

MYSQL 8 JPA 2.0 mysql 在 JPA 保存后将 1 秒添加到当前日期