JPA利用specification机制进行表连接查询的问题记录

简介: 采用root.join连接表过程中注意点

利用root.join()实现表关联

  • 利用join方法实现表关联查询的是时候是依赖于主表对应的实体中存在需要关联的表的实体。
  • 这两者的关系可以是1:1 1:n n:1 n:m
  • 相应的实体中需要使用到@OneToMany\@ManyToMany\@ManyToOne\@OneToOne 注释相应的字段。该注解可单独出现在一个实体中,互相关联的实体没有该注解的约束(例如:一个中用例1:n 的注解另一个并不一定需要增加对应的对象同时也就没有n:1注解的事情了)
  • 通过join可以设置左相联还是右相联还是内相联。
  • 后面就可直接通过root.get(attributeName).get(property)来进行条件的拼接了

直接通过criteriaQuery 来获取其他实体的root

  • 通过这种做法默认是进行cross join 交叉连接,同时无法设置目标表的属性条件,因为源表中没有相应的字段映射。

相关注解理解

@JoinColumn中的name和referencedColumnName 属性不同的关系下所指的哪个实体中的属性也不同,需要分却源表和目标表。原表即是主表,目标表也就是嵌入式的连接表。

相关文章
|
SQL 关系型数据库 MySQL
JPQL-Query查询实例详解
JPQL-Query查询实例详解
338 0
|
SQL Java 数据库
Springboot整合JPA 多表关联操作 @Query
Springboot整合JPA 多表关联操作 @Query
1151 0
Springboot整合JPA 多表关联操作 @Query
|
SQL Java 数据库连接
SpringBoot从入门到精通(二十七)JPA实现自定义查询,完全不需要写SQL!
前面讲了Spring Boot 整合Spring Boot JPA,实现JPA 的增、删、改、查的功能。JPA使用非常简单,只需继承JpaRepository ,无需任何数据访问层和sql语句即可实现完整的数据操作方法。 JPA除了这些功能和优势之外,还有非常强大的查询的功能。以前复查的查询都需要拼接很多查询条件,JPA 有非常方便和优雅的方式来解决
SpringBoot从入门到精通(二十七)JPA实现自定义查询,完全不需要写SQL!
|
Java 数据库连接 mybatis
【Spring常见错误】No qualifying bean of type
📋📋 精彩摘要:MyBatis 核心配置文件(xxxConfig.xml),该文件配置了MyBatis的一些全局信息,,包含数据库连接信息和MyBatis运行时所需的各种特性,以及设置和响应MyBatis行为的一些属性。本文将深入浅出的介绍MyBatis核心配置文件中常用的标签配置。
6474 0
|
15天前
|
SQL Java 数据库连接
Spring Data JPA 技术深度解析与应用指南
本文档全面介绍 Spring Data JPA 的核心概念、技术原理和实际应用。作为 Spring 生态系统中数据访问层的关键组件,Spring Data JPA 极大简化了 Java 持久层开发。本文将深入探讨其架构设计、核心接口、查询派生机制、事务管理以及与 Spring 框架的集成方式,并通过实际示例展示如何高效地使用这一技术。本文档约1500字,适合有一定 Spring 和 JPA 基础的开发者阅读。
87 0
|
NoSQL 数据可视化 关系型数据库
推荐几个好用的redis可视化工具
推荐几个好用的redis可视化工具
16286 1
|
SQL Java 数据库连接
Springboot JPA日志输出打印SQL语句和传入的参数 高阶篇
Springboot JPA日志输出打印SQL语句和传入的参数 高阶篇
3965 0
Springboot JPA日志输出打印SQL语句和传入的参数 高阶篇
|
6月前
|
NoSQL Java Redis
springboot怎么使用Redisson
通过以上步骤,已经详细介绍了如何在Spring Boot项目中使用Redisson,包括添加依赖、配置Redisson、创建配置类以及使用Redisson实现分布式锁和分布式集合。Redisson提供了丰富的分布式数据结构和工具,可以帮助开发者更高效地实现分布式系统。通过合理使用这些工具,可以显著提高系统的性能和可靠性。
2001 34
|
存储 Java 数据库
Java一分钟之-JPA实体监听器:@PrePersist, @PostLoad
【6月更文挑战第15天】JPA实体监听器通过`@PrePersist`等注解在实体生命周期关键点执行逻辑,例如设置默认值或处理并发更新。常见问题包括监听器未注册、并发冲突和性能影响。示例展示了如何在`@PrePersist`中设置默认创建时间和`@PostLoad`时初始化关联数据。使用监听器能增强灵活性,但也需注意潜在问题和优化。
336 6
|
12月前
|
Docker 容器
Docker安装及镜像源修改
本文介绍了Docker的安装过程和如何修改Docker镜像源以加速下载。包括更新系统包、安装所需软件包、设置yum源、安装Docker以及验证安装是否成功。接着,提供了修改Docker镜像源的步骤,包括创建配置文件、编辑配置文件以设置镜像加速地址,并提供了几个常用的国内镜像源地址。最后,通过重启Docker服务和检查配置是否生效来完成镜像源的修改。
Docker安装及镜像源修改