2

我有以下型号

@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 时,会发生以下事情:

  1. 在 ROOT 表上没有主键(好吧,它是一个 @Embeddable,并且它没有标识)
  2. 从 ROOT.GRAPH 到 GRAPH.ID 生成外键(如预期的那样)
  3. 从 ROOT.NODE 到 NODE.ID 没有外键(这是我无法理解的)

你能帮我解释一下这种行为的原因吗?对主键和缺少的外键有什么可以做的吗?

谢谢,M。

4

0 回答 0