Hibernate 关联关系中的OneToMany 和ManyToOne
子表:

此时如果查询主表,list中有8个实体Bean:

)
实例如下:
主表:
@Entity
@Table(name = "test_hdr")
public class TmTestTableHdrImpl implements TmTestTableHdr {
.............
?? @OneToMany(mappedBy="_header")
??? private Set<TmTestTableDtlImpl> _details;
}
子表:
@Entity
@Table(name="test_dtl")
public class TmTestTableDtlImpl implements TmTestTableDtl {
.............
??? @ManyToOne
??? @JoinColumn(name="test_hdr_id",insertable=false,updatable=false)
??? private TmTestTableHdrImpl _header;
}
测试:
1.读子表:
??????? TestDtlPK dtlPK = new TestDtlPK(testDtlId);
??????? TmTestTableDtl rec = genDao.read(dtlPK);
结果:
?????? 
2.读主表:
??????? TestHdrPK hdrPK = new TestHdrPK(testHdrId);
??????? TmTestTableHdr bean = genDao.read(hdrPK);
结果:
?????? 
如果需要让一对多这一端(即主表)维护关联关系,则需要删除mappedBy元素且加上@JoinColumn并将多对一这端的 @JoinColumn的insertable和updatable设置为false,即:
主表:
@Entity
@Table(name = "test_hdr")
public class TmTestTableHdrImpl implements TmTestTableHdr {
...............
@OneToMany
@JoinColumn(name='test_hdr_id')
private Set<TmTestTableDtlImpl> _details;
}
子表:
@Entity
@Table(name="test_dtl")
public class TmTestTableDtlImpl implements TmTestTableDtl {
.............
??? @ManyToOne
??? @JoinColumn(name="test_hdr_id",insertable=false,updatable=false)
??? private TmTestTableHdrImpl _header;
}