hibernate,stackoverflow与特定的实体映射

时间:2014-03-07 14:08:55

标签: java hibernate

我有以下映射:

@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是一个可嵌入的实体,但是为了更好地控制数据库的主键和底层结构,我改用了更传统的模型。

关键是,在加载实体的过程中,它会产生堆栈溢出!!我认为这两个实体之间存在一些循环加载而且它被卡住了!

我正在考虑将所有内容还原到原来的样子,但我希望理解为什么它会给我这个错误。

1 个答案:

答案 0 :(得分:0)

您指定DataModel的@IdClass为DataModelPK.class,但您的@Id注释位于int字段上。

这是一个问题,它可能会导致你的堆栈溢出,但我不确定。

更新我现在看到第二个@Id注释,所以我会更正,我会调查更多。