这里使用学生和学生的详细信息表来表述,OneToOne有三种配置
1、主键关联
主键关联是最复杂也是最常用的关联方式。
配置如下:studentInfo主键生成策略,使用当前对象中student属性的主键来作为本对象的主键
@Id
@GeneratedValue(generator="pkGenerator")
@GenericGenerator(name = "pkGenerator", strategy = "foreign", parameters = @Parameter(name = "property", value = "student"))
private Integer id;
//optional 关联属性可以为空 接连关系由StudentInfo的属性student维持
@OneToOne(mappedBy="student",cascade=CascadeType.ALL,optional=true)
//@Cascade(value={org.hibernate.annotations.CascadeType.ALL})
private StudentInfo studentInfo ;
//optional 关联属性不能为空
@OneToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE},optional=false)
@PrimaryKeyJoinColumn
private Student student;
测试代码:
@Test
public void addStudent() {
Student student = new Student("zyn", 22,20072724L);
StudentInfo info = new StudentInfo("3444444","成都市");
info.setStudent(student);
this.studentInfoDao.save(info);
}
2、外键关联,只需要修改StudentInfo中的student属性
通过外键student_id关联
@OneToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE},optional=false)
//@PrimaryKeyJoinColumn
@JoinColumn(name="student_id",nullable=false,unique=true)
private Student student;
3、中间表关联
通过中间表student_and_info关联
@OneToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, optional = false)
@JoinTable(name="student_and_info",joinColumns = @JoinColumn(name = "info_id"), inverseJoinColumns = @JoinColumn(name = "student_id"))
private Student student;
分享到:
相关推荐
hibernate_onetoone.part5.rar
hibernate_onetoone.part4.rar
第三部分hibernate_onetoone.part3共5部分 。全部下载需要10分
这可以通过在映射文件中设置`<one-to-one>`标签或者使用Java注解`@OneToOne`来实现。 2. **共享主键关联**:两个实体类共用同一个主键,这意味着它们在数据库中实际上是同一个表的不同视图。这可以通过`@...
hibernate_onetoone.part2.rar <br>共5部分。 需要全部才能解压
在Hibernate的源码中,`OneToOne`注解会被`org.hibernate.cfg.annotations.EntityBinder`类处理。这个类会解析注解,构建`JoinColumn`对象,并将其添加到元数据中,以便在SQL生成和查询过程中使用。 ### 六、性能...
在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一...
本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 一、Hibernate对象三状态 1. 游离态(Detached):对象在应用程序中创建,但尚未与Session...
在Java的持久化框架Hibernate中,一对一(One-to-One)映射是一种常见关系映射,用于表示两个实体之间一对一的关联。本篇文章将详细探讨Hibernate中实现一对一映射的两种方式,并结合源码分析其原理。 一、主键外键...
本项目“hibernate_OneToOne-biDirectional”专门探讨了如何在RESTful API中使用Hibernate进行双向一对一映射。 首先,让我们理解什么是双向一对一映射。在Hibernate中,一对一映射可以是单向的,也可以是双向的。...
在本示例中,我们将探讨一个关于Hibernate的常见错误,特别是与一对一(OneToOne)关系映射相关的错误。通过分析这个错误,我们可以深入理解Hibernate的OneToOne关联,并学习如何正确配置和解决此类问题。 标题...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念。这种关联关系意味着一个实体最多只能与另一个实体的实例进行关联,反之亦然。本示例将深入讲解如何在Hibernate中...
hibernate中oneTOone,one to many等映射关系代码
在这个示例中,我们将深入探讨如何使用Maven、Hibernate来实现一对一的关联,并通过`OneToOne-master`这个项目来演示具体步骤。 首先,我们需要了解Maven,它是Java项目管理工具,用于构建、依赖管理和项目信息管理...
7. **关联映射**:包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@ManyToMany)关系的映射,方便处理对象间的关联关系。 8. **延迟加载**:Hibernate的懒加载策略可以在需要时才...
2. 关联注解:`@ManyToOne`, `@OneToMany`, `@OneToOne`, `@ManyToMany` 这些注解分别表示一对多、多对一、一对一和多对多的关系。例如,表示用户与角色的一对多关系: ```java @ManyToOne @JoinColumn(name=...
- **一对一(OneToOne)**: 一个实体类实例对应数据库表的一行记录。 - **一对多(OneToMany)**: 一个实体类实例对应数据库表的多行记录。 - **多对一(ManyToOne)**: 多行记录对应数据库表的一个实体类实例。 - *...
7. 关联映射:包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@ManyToMany)四种关系映射,以及级联操作(cascade)和懒加载(lazy)策略。 8. 自动更新和插入:Hibernate的自动...
7. **关联映射**: Hibernate支持多种关联映射,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)。理解这些关联类型以及它们的配置是掌握Hibernate的重要环节。 8. **...
Hibernate 支持多种数据库表之间的关系映射,如一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。通过 `<one-to-one>`、`<list>`、`<set>` 等元素可以定义这些关系,并指定...