休眠-@Embeddable自身的父级关系

时间:2018-08-21 15:33:10

标签: java hibernate annotations

我希望定义一个名为@Embeddable的{​​{1}}类。此类的生命周期与名为Frame的{​​{1}}有关,该@Entity拥有一系列帧的列表,并标记为Master,即

@ElementCollection

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

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

如何注释@Embeddable @Access( AccessType.PROPERTY ) public class Frame { private Frame parentFrame; private int treeStage; @Basic @Column( nullable = false ) public int getTreeStage() { return treeStage; } } 属性?

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

1 个答案:

答案 0 :(得分:0)

这种想法是错误的。无法在其内部引用embeddable,即在embeddable内具有一个字段,其类型为embeddable本身(在我们的Frame案件)。

Hibernate无法处理这种结构,因为它会试图嵌入自身,直到无限。

Frame必须更改为实体,以保留对其父项Frame的引用。