首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Hibernate 关联关系中的OneToMany 跟ManyToOne

2012-11-08 
Hibernate 关联关系中的OneToMany 和ManyToOne子表:此时如果查询主表,list中有8个实体Bean:)实例如下:主表

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;

}

热点排行