我有以下型号
@Entity
@Table(name = "GRAPH")
public class Graph {
[...]
@ElementCollection
@CollectionTable(name = "ROOT", joinColumns = @JoinColumn(name = "GRAPH", nullable = false))
private Set<Root> roots;
}
@Entity
@Table(name = "NODE")
public class Node {
[...]
}
@Embeddable
public class Root {
[...]
@ManyToOne(optional = false)
@JoinColumn(name = "NODE", nullable = false)
private Node node;
}
我使用 EclipseLink 作为 JPA 提供者。当让 EclipseLink 为这个结构生成 DDL 时,会发生以下事情:
- 在 ROOT 表上没有主键(好吧,它是一个 @Embeddable,并且它没有标识)
- 从 ROOT.GRAPH 到 GRAPH.ID 生成外键(如预期的那样)
- 从 ROOT.NODE 到 NODE.ID 没有外键(这是我无法理解的)
你能帮我解释一下这种行为的原因吗?对主键和缺少的外键有什么可以做的吗?
谢谢,M。