集合类型中的OneToMany
@Entity public class City {
@OneToMany(mappedBy="city")
public List<Street> getStreets() {
return streets;
}
...
}
注:这里OneToMany采用mappedBy方式,表面由子表维护关联关系,也就是说,在加载子表的某条记录时,主表的这个实体Bean也会相应的加载。但反过来,如果加载主表,此时主表中的集合不会加载。
(
注:默认的加载方式为fetch=FetchType.LAZY
如果关联关系中设置加载方式为立即加载,即:
@Entity public class City {
@OneToMany(mappedBy="city",fetch=FetchType.EAGER)
public List<Street> getStreets() {
return streets;
}
...
}
此时注意结果集会有重复记录(根据子表中相应记录个数决定多少重复)
如:
主表有如下记录:
子表:
此时如果查询主表,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;
}
分享到:
相关推荐
基于HIBERNATE 操作表的关系练习例子
博文链接:https://llying.iteye.com/blog/220809
和其它许多批注一样,在多对多关联中很多值是自动生成,党双向多对多关联中没有定义任何物理映射时,Hibernate根据以下规则生成相应的值,关联表名:主表表名+下划线+从表表名,关联到主表的外键名:主表名+下划线+...
onetomany-hibernate在myeclipse下的使用开发hibernate程序
hibernate对象三状态及OneToOne&OneToMany&ManyToMany讲解,代码示例,数据库示例!非常全面
onetomany onetoone manytoone manytomany xml的
以上所有实体使用 JOINED 策略 Ferry和Boat class使用同名的主键关联(eg: Boat.id = Ferry.id), AmericaCupClass 和 Boat 关联的条件为 Boat.id = AmericaCupClass.BOAT_ID. 从父类继承的属性 @MappedSuperclass ...
NULL 博文链接:https://tgwall163.iteye.com/blog/1277750
一对多关系的 Hibernate 注释
JPA_OneToMany学习教程JPA_OneToMany学习教程JPA_OneToMany学习教程JPA_OneToMany学习教程
* 5.identity 使用SQL Server和MySQL的自增字段,这个方法不能放到Oracle中,Oracle不支持自增字段,要设定sequence(MySQL和SQL Server中很常用)。等同于JPA中的IDENTITY * 例:@GeneratedValue(generator = ...
NULL 博文链接:https://tianjun309.iteye.com/blog/695332
该项目使用MySql Example描述了带有Spring Data JPA和Hibernate的Spring Boot示例。 描述 该项目显示了存储在MySql数据库中的用户列表。 使用以下端点,可以实现不同的操作: /rest/users/all这将返回在MySql表中...
实体将City,Tag,Comment,Country和Year类设置为具有OneToMany,ManyToOne和ManyToMany关系的实体。 储存库实例五个存储库接口扩展了CRUD存储库。 CityRepository还包含findByCountry,findByCountryId,...
详解Hibernate cascade级联属性的CascadeType的用法 cascade(级联) ...cascade表示级联操作,在hibernate配置注解@OneToOne,@OneToMany,@ManyToMany,@ManyToOne中的属性。 例如: @ManyToOne(c
“#跟踪狐狸”“#跟踪狐狸”“#跟踪狐狸”“#跟踪狐狸”“#跟踪狐狸”“#跟踪狐狸”“#跟踪狐狸”“#跟踪狐狸”“#跟踪狐狸”“#跟踪狐狸”
一对多Nosql演示与OneToMany关系中的MongoDB的Spring Data演示项目 该项目是我发表的文章的来源。 请以下文章的链接:
迁移,typeorm,实体和postgres数据库,带有tsyringe的自动依赖项注入,OneToMany更改,ManyToMany,ManyToOne,错误处理和单元测试。 在此挑战中,在NodeJs中创建了一个带有Typescript的应用程序,该应用程序应...
使用诸如oneToMany,ManyToOne之类的关联来获取数据 将过滤器应用于结果 分页... 安装 CodeIgniter Versoin> = 2.xx 将文件MY_Model.php复制到application/core/文件夹。 用法 创建一个从MY_Model扩展的模型并设置...
一对多 @OneToMany 注解可定义一对多关联。一对多关联可以是双向的。 双向 规范中多对一端几乎总是双向关联中的主体(owner)端,而一对多的关联注解为 @OneToMany(mappedBy=)