其實在定義單向關(guān)系中只有三情況:
OneToOne
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="當(dāng)前對象的關(guān)聯(lián)id")
使用如:
1.直接使用
JPQL:select o.id, o.name,o.relaObj.id,o.relaObj.name from User o where o.id=?1,
此種方式生成的SQL:select t0.id,t0.name,t1.id,t2.name from User t0,Rel t1 where t0.id=?1 and t0.當(dāng)前對象的關(guān)聯(lián)id=t1.id
2.用join
JPQL:select o.id, o.name,r.id,o.r.name from User o left join o.relaObj r where o.id=?1
第2種方式常用一些
OneToMany
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinTable(
joinColumns = { @JoinColumn( name="condition_id") },//當(dāng)前對象的關(guān)聯(lián)id
inverseJoinColumns = @JoinColumn( name="actionDefine_id")//關(guān)聯(lián)表的id
)
@IndexColumn(name="sortFlag")
ManyToMany
@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinTable(
name="中間表",,
joinColumns = { @JoinColumn( name="condition_id") },//當(dāng)前對象的關(guān)聯(lián)id
inverseJoinColumns = @JoinColumn( name="actionDefine_id")//關(guān)聯(lián)表的id
)
@IndexColumn(name="sortFlag")