【问题标题】:Hibernate - parent relationship for a @Embeddable to itselfHibernate - @Embeddable 与其自身的父关系
【发布时间】:2018-08-21 15:33:10
【问题描述】:

我希望定义一个名为Frame@Embeddable 类。此类的生命周期与名为Master@Entity 相关,该Master 拥有一个注释为@ElementCollection 的帧列表,即

@Entity
public class Master extends ObjectWithId {
    private List<Frame> frameList;

    @ElementCollection
    @OrderColumn
    @OrderBy( "treeStage ASC" )
    public List<Frame> getFrameList() { return frameList; }
}

@Embeddable
@Access( AccessType.PROPERTY )
public class Frame {
    private int treeStage;
    @Basic
    @Column( nullable = false )
    public int getTreeStage() { return treeStage; }
}

但正如建议的那样,frameList 具有树结构,这意味着每个 Frame 都有一个除根之外的父级。因此,我想向 Frame 添加一个指向其父级的属性:

@Embeddable
@Access( AccessType.PROPERTY )
public class Frame {
    private Frame parentFrame;
    private int treeStage;
    @Basic
    @Column( nullable = false )
    public int getTreeStage() { return treeStage; }
}

如何注释parentFrame 属性?

目前我只得到无限循环,因为可嵌入对象通过 parentFrame 属性嵌入自身...

【问题讨论】:

    标签: java hibernate annotations


    【解决方案1】:

    这个想法是错误的。没有办法在其内部引用embeddable,即在embeddable 内部有一个字段,它是embeddable 本身的类型(在我们的例子中是Frame)。

    Hibernate 无法处理这样的结构,因为它会寻求嵌入自身等等直到无穷大。

    必须将Frame 更改为实体,以保持对该父级Frame 的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 2021-12-27
      • 2023-03-10
      相关资源
      最近更新 更多