我希望定义一个名为@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属性嵌入自身...
答案 0 :(得分:0)
这种想法是错误的。无法在其内部引用embeddable
,即在embeddable
内具有一个字段,其类型为embeddable
本身(在我们的Frame
案件)。
Hibernate无法处理这种结构,因为它会试图嵌入自身,直到无限。
Frame
必须更改为实体,以保留对其父项Frame
的引用。