包含@ManyToOne的@Embeddable的@ElementCollection

时间:2014-09-17 07:59:08

标签: jpa eclipselink many-to-one embeddable

我有以下型号

@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 Provider。让EclipseLink为此结构生成DDL时,会发生以下情况:

  1. ROOT表上没有主键(好的,它是@Embeddable,它没有标识)
  2. 从ROOT.GRAPH到GRAPH.ID生成外键(正如预期的那样)
  3. 从ROOT.NODE到NODE.ID没有外键(这是我无法理解的)
  4. 你能帮我解释一下这种行为的原因吗?是否可以对主键和缺少的外键进行操作?

    谢谢, 微米。

0 个答案:

没有答案