读书人

Hibernate 关联关系中的OneToMany 跟M

发布时间: 2012-11-08 08:48:11 作者: rapoo

Hibernate 关联关系中的OneToMany 和ManyToOne

子表:

Hibernate 关联关系中的OneToMany 跟ManyToOne

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

Hibernate 关联关系中的OneToMany 跟ManyToOne

实例如下:

主表:

@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);

结果:

?????? Hibernate 关联关系中的OneToMany 跟ManyToOne

2.读主表:

??????? TestHdrPK hdrPK = new TestHdrPK(testHdrId);
??????? TmTestTableHdr bean = genDao.read(hdrPK);

结果:

?????? Hibernate 关联关系中的OneToMany 跟ManyToOne

如果需要让一对多这一端(即主表)维护关联关系,则需要删除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;

}

读书人网 >编程

热点推荐