Jpa @元素@embeddeble的集合包含@ManyToOne

Jpa @元素@embeddeble的集合包含@ManyToOne,jpa,eclipselink,many-to-one,embeddable,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

我有下面的型号

@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;

}
@实体
@表(name=“GRAPH”)
公共类图{
[...]
@元素集合
@CollectionTable(name=“ROOT”,joinColumns=@JoinColumn(name=“GRAPH”,nullable=false))
私人扎根;
}
@实体
@表(name=“NODE”)
公共类节点{
[...]
}
@可嵌入
公共类根{
[...]
@多通(可选=假)
@JoinColumn(name=“NODE”,nullable=false)
专用节点;
}
我使用EclipseLink作为JPA提供者。当让EclipseLink为该结构生成DDL时,会发生以下情况:

  • 根表上没有主键(好的,它是@Embeddeble,并且没有标识)
  • 从ROOT.GRAPH到GRAPH.ID生成外键(如预期)
  • ROOT.NODE到NODE.ID之间没有外键(这是我无法理解的)
  • 你能帮我解释一下这种行为的原因吗?是否可以对主键和缺少的外键采取措施

    谢谢,
    M.

    我也处于同样的情况。你找到解决办法了吗?