Spring Data JPA中@OneToOne注解的使用

2025-06-19 10:25:10

1、那么我们首先创建一个Book实体类,这个实体类中有id和name两个字段,我们需要添加这两个属性,并且创建含有这两个属性的构造方法。

Spring Data JPA中@OneToOne注解的使用

2、同样的,我们可以在ID字段上看到如下的注解,通常情况下我们为了保证每一个表的主键ID都从一开始增加,我们需要设置@GeneratedValue(strategy = GenerationType.IDENTITY。@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private long id;

Spring Data JPA中@OneToOne注解的使用

3、接下来我们创建BookDetail实体类,这个实体类中有id、numberOfPage属性,我们同样提供了一个构造方法。

Spring Data JPA中@OneToOne注解的使用

4、接下来就是介绍一对一的关联关系了,我们在Book实体类中增加bookDetail的属性,由Book来维护两者之间的关系,JPA就会在Book表中新增加一列bookDetail,它的值就是BookDetail表中的主键值。我们需要用到@OneToOne和@JoinColumn注解。@OneToOne(cascade = CascadeType.ALL)@JoinColumn(name = "book_detail")private BookDetail bookDetail;我们在BookDetail实体类中也增加了注解,注意这里使用的是mappedBy,用于双向关联。@OneToOne(cascade = CascadeType.ALL, mappedBy = "bookDetail")private Book book;

Spring Data JPA中@OneToOne注解的使用
Spring Data JPA中@OneToOne注解的使用

5、接下来就是在具体的开发中如何使用了,我们创建BookRepository和BookDetailRepository,都继承JpaRepository。

Spring Data JPA中@OneToOne注解的使用
Spring Data JPA中@OneToOne注解的使用

6、接下来进行单元测试,我们在单元测试的过程我们来介绍具体的应用。首先需要说的一点是,无论单向还是双向,关系的保存都需要关系维护端来进行操作。那么在此一对一的关系中,Book是关系的维护端,因此是对Book的映射,一个关系的维护端只能关联一个被维护端。例如我们在保存book的时候也保存了bookdetail的信息。

Spring Data JPA中@OneToOne注解的使用

7、那如果保存bookDetail结果是怎么样的呢?关系的建立还是要依赖关系维护端来操作,因此如果是保存bookDetail,那么book表的book_detail为null。

Spring Data JPA中@OneToOne注解的使用
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢