集合类型中的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;
}
分享到:
相关推荐
在Java持久化框架Hibernate中,"一对一"(one-to-one)和"一对多"(one-to-many)是两种常见的关联关系映射。本教程将详细讲解如何在Hibernate中实现"一对多"关联,并通过实际例子加深理解。 首先,让我们了解什么...
一、Hibernate关联关系介绍 在Hibernate中,关联关系主要包括以下几种: 1. 一对一(OneToOne):一个实体对应另一个实体的唯一实例。 2. 一对多(OneToMany):一个实体可以与多个其他实体相关联。 3. 多对一...
Hibernate关联关系是Java持久化框架Hibernate中的核心概念,它允许我们在数据库中建立对象之间的关系映射,以便在程序中操作对象时,可以自动处理与数据库的交互。本篇将深入探讨Hibernate的四种主要关联关系:一对...
总之,Hibernate关联关系是理解其工作原理的关键,它使得Java对象和数据库记录之间的映射变得简单。通过练习,你可以掌握如何配置和使用这些关系,以及如何进行相关的查询操作,从而提升你的开发效率和代码质量。...
以上就是关于Hibernate关联关系和HQL的基本实例。在实际开发中,这些关联关系和查询方式可以帮助我们构建灵活、可扩展的数据模型,提升代码的可读性和可维护性。在使用时,要注意合理选择关联类型,避免冗余数据,并...
总结,"hibernate关联关系2"项目旨在帮助开发者理解和掌握如何在实际应用中利用Hibernate处理数据库的一对多关联。通过这个项目,不仅可以深化对Hibernate ORM的理解,还能增强数据库操作的实践经验。
"hibernate关联关系映射"是Hibernate的核心概念之一,它定义了如何在Java对象和数据库表之间建立关系。以下是对这个主题的详细讲解: 一、一对一关系映射(One-to-One) 一对一关系是指一个实体对应另一个实体的...
本篇文章将深入探讨Hibernate中常见的几种关联关系及其基本配置。 一、一对一(OneToOne)关联 在一对一关联中,一个实体对象只对应数据库中的一个记录。配置方式通常通过`@OneToOne`注解实现,可以设置`mappedBy`...
以上是关于Hibernate关联关系的一些基本概念和使用技巧,深入理解和应用这些知识能够帮助开发者更高效地使用Hibernate进行数据库操作。如果你在实践中遇到了具体的问题,可以参考相关文档、教程或社区讨论来获取更...
本篇文章将深入探讨Hibernate中的三种主要关联关系:一对一、一对多和多对多。 **一对一关联(One-to-One)** 一对一关联在现实生活中很常见,例如一个人只有一个身份证。在Hibernate中,这种关联可以通过`@...
### Hibernate关联关系 关联关系是指在Java对象与数据库表之间建立的连接。主要有以下几种类型: 1. **一对一(OneToOne)**:一个实体对应表中的唯一一行数据。可以通过`@OneToOne`注解来定义,可以设置`fetch`...
关联关系是数据库中的表与表之间的一种联系,比如一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。在Hibernate中,我们可以通过以下注解来配置关联关系: 1. `@OneToOne`: ...
本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...
在Java的持久化框架Hibernate中,"多对一"关联关系是对象关系映射(ORM)中的一个重要概念。这种关联关系意味着在一个实体类中,一个或多个实例可以与另一个实体类的一个实例相关联。例如,我们可以想象一个班级...
本教程将详细讲解Hibernate中的关联关系映射配置,帮助你理解和掌握如何在Hibernate中设置不同类型的关联。 一、一对一(One-to-One)关联 在现实世界中,两个实体之间可能存在一对一的关系,例如一个人只有一个...
在这个“基于注解的关联关系Hibernate”的主题中,我们将深入探讨如何使用Hibernate的注解来配置不同类型的关联关系,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-...
综上所述,本教程涵盖了Hibernate关联关系的基础知识,包括1对1、一对多和多对多的实现,以及如何在关联关系中进行增删改查操作。结合MySQL数据表文件,初学者可以更好地理解这些概念并应用于实际项目中。在实践中...
举个例子,假设我们有一个学生实体类(Student)和一个班级实体类(Class),在Class中我们可以声明一个`@OneToMany(mappedBy = "class")`的List,这表示学生的班级属性(如`class`)将负责维护关联关系。...
在Java的持久化框架Hibernate中,关联映射是核心概念之一,它允许对象之间的关系在数据库层面得以体现。本文将详细解析四种基本的关联类型:一对一(OneToOne)、多对多(ManyToMany)、一对多(OneToMany)和多对一...
标题"Hibernate教程15_关联关系中的CRUD Cascade_Fetch"主要关注两个核心概念:关联关系和它们在创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作中的级联(Cascade)以及懒加载和立即加载(Fetch...