前言
前面几篇我们学习的都是单表查询,就是对一张表中的数据进行查询。而实际项目中,基本都会有多张表联合查询的情况,今天我们就来了解下JPA的联表查询是如做的。
源码
@OneToOne 注解实现一对一关系映射。比如用户跟车辆的关系(这里假设一个人只能有一辆车),一个用户只能对应一辆车,而一辆车同样只能对应一个用户。
老规矩,在实例之前,我们先看看源码:
public @interface OneToOne {
Class targetEntity() default void.class;
CascadeType[] cascade() default {};
FetchType fetch() default EAGER;
String mappedBy() default "";
boolean orphanRemoval() default false;
}
复制代码
注解属性
- targetEntity:(可选)表示默认关联的实体类型,默认为当前标注的实体类
- cascade:(可选)当前类对象操作后级联对象的操作。默认为不级联任何操作。
- fetch:(可选)关联是否延迟加载或者立刻加载。立刻加载是立刻获取关联的实体;延迟加载是表示关系类在被访问时才加载。默认值EAGER,也就是立刻加载。
- mappedBy:(可选)拥有关联关系的域,如果关系是单向的就不需要;如果是双向关系表,那么拥有关系的这一方有建立、解除和更新与另一方关系的能力,而另一方没有,只能被动管理,这个属性被定义在关系的被拥有方
- orphanRemoval:(可选)是否将删除操作应用于具有已从关系中删除,并将删除操作级联到这些实体。
单向联表
我这里所说的单向联表就是只有一方添加注解;通俗讲就是我可以通过 user 获取到其 car 的信息,而不同通过 car 获取到其 user 的信息。

本文详细介绍了Spring JPA中的一对一(OneToOne)联表查询,包括单向和双向联表,以及延迟加载(懒加载)的概念。通过注解@OneToOne配置实体之间的关系,讨论了如何通过user获取car信息,反之亦然,以及如何实现数据的懒加载以优化性能。
最低0.47元/天 解锁文章
1216

被折叠的 条评论
为什么被折叠?



