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 属性不同的关系下所指的哪个实体中的属性也不同,需要分却源表和目标表。原表即是主表,目标表也就是嵌入式的连接表。

相关文章
|
8月前
|
SQL 关系型数据库 MySQL
SQL INSERT INTO order_record SELECT * FROM 从一张表查出数据插入到另一张表
SQL INSERT INTO order_record SELECT * FROM 从一张表查出数据插入到另一张表
42 0
|
8月前
|
SQL Oracle 关系型数据库
SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则
SQL FOREIGN KEY 约束用于防止破坏表之间关系的操作。FOREIGN KEY 是一张表中的字段(或字段集合),它引用另一张表中的主键。具有外键的表称为子表,具有主键的表称为被引用表或父表。
129 0
SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则
|
8月前
|
SQL Oracle 关系型数据库
SQL PRIMARY KEY 约束- 唯一标识表中记录的关键约束
SQL NOT NULL 约束用于强制确保列不接受 NULL 值。这意味着该字段始终包含一个值,而不允许插入新记录或更新记录时不提供此字段的值。
155 0
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(八):聊聊如何插入数据时比约束更灵活的限制数据插入以及怎么一个insert语句同时插入多张表
插入数据、阻止对某几列插入的实现、复制表的定义和数据以及注意事项、比创建约束功能更强大!用 WITH CHECK OPTION限制数据录入、如何一个insert将数据同时插入多个表【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。但是!ORA - 01723 : 不允许长度为 0 的列。
【SQL开发实战技巧】系列(八):聊聊如何插入数据时比约束更灵活的限制数据插入以及怎么一个insert语句同时插入多张表
|
SQL C++ Python
SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)
掌握了这些,就比较高级啦 Using the Same Table Twice 如下面查询中的branch字段 SELECT a.account_id, e.emp_id, b_a.name open_branch, b_e.
4667 0
|
SQL Java 数据库连接
OR-Mapping 设计改进(主键查询改进) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(主键查询改进)
oracl查询两表相同的字段
学习oracl查询两表相同的字段。
|
SQL 关系型数据库 MySQL
【sql语句基础】——查(select)(单表查询顺序补充)
【sql语句基础】——查(select)(单表查询顺序补充)
|
SQL 关系型数据库 MySQL
解决高并发下insert到数据库表多条记录的问题
解决高并发下insert到数据库表多条记录的问题
544 0
解决高并发下insert到数据库表多条记录的问题