我有2个实体O和D,从O(一)到D(很多)有一对多的关系。关系本身有一个属性 - 计数。
使用hibernate对此进行建模的最佳方法是什么?
我目前所拥有的是代表这种关系的另一个实体OD。它有自己的人工密钥
实体的缩写版本如下
@Entity
class O {
@Id
private Long id;
@OneToMany(mappedBy = "o")
private Set<OD> ods;
}
@Entity
class OD {
@Id
private Long id;
@ManyToOne
private O o;
// This is uni-directional reln
@OneToOne
private D d;
private int count;
}
这是最好的方法吗?我不喜欢这种关系有自己的id的事实,但有没有更好的方法来建立这种关系?
答案 0 :(得分:0)
您可以将OD
建模为@Embeddable
,并将拥有方从@OneToMany
更改为@ElementCollection
,例如
@Entity
public class O {
@Id
private Long id;
@ElementCollection
@CollectionTable( name = "OD")
private Set<OD> ods;
}
@Embeddable
public class OD {
// This is uni-directional reln
@OneToOne
private D d;
private int count;
}
DDL
语句几乎相同,区别在于OD的生命周期总是依赖于其父对象的生命周期,并且不具有自己的身份