我有以下映射:
@Entity
public class Satellite implements Serializable, Comparable<Satellite> {
@NotNull @Id
private long id;
.....
@OrderColumn
@OneToMany(mappedBy = "satellite", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<DataModel> dataModel;
}
和一个子实体:
@Entity @IdClass(value=DataModelPK.class)
public class DataModel implements Serializable, Comparable<DataModel> {
private static final long serialVersionUID = -3416403014857250990L;
@Id
private int orbit; // related to reference orbit file
private int dataPerOrbit; // in Gbit
@ManyToOne @Id
private Satellite satellite;
}
最初,DataModel
是一个可嵌入的实体,但是为了更好地控制数据库的主键和底层结构,我改用了更传统的模型。
关键是,在加载实体的过程中,它会产生堆栈溢出!!我认为这两个实体之间存在一些循环加载而且它被卡住了!
我正在考虑将所有内容还原到原来的样子,但我希望理解为什么它会给我这个错误。
答案 0 :(得分:0)
您指定DataModel的@IdClass为DataModelPK.class,但您的@Id注释位于int字段上。
这是一个问题,它可能会导致你的堆栈溢出,但我不确定。
更新我现在看到第二个@Id注释,所以我会更正,我会调查更多。