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 的类的注释,指向两个不同的表的主要内容,如果未能解决你的问题,请参考以下文章
g++不能对具有虚拟方法的类的实例的运行时大小进行更多优化吗?
使用 JPA 2.1、EclipseLink、JSF 2.0 的日志表