Hibernate - @Embeddable 与自身的父关系

我希望定义一个@Embeddable名为Frame. 这个类的生命周期与一个@Entity被调用有关,Master它拥有一个被注释为 a 的帧列表@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 属性嵌入自己......


富国沪深
浏览 184回答 1
1回答

白板的微信

想法是错误的。没有办法引用embeddable内部本身,即在内部有一个embeddable属于embeddable自身类型的字段(Frame在我们的例子中)。Hibernate 无法处理这样的结构,因为它会试图嵌入自身等等直到无穷大。Frame必须更改为实体才能将此引用保留到其父级Frame。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java