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

相关文章
|
索引
SAP ABAP——内表(五)【追加内表数据—INSERT】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的追加内表数据的INSERT相关语句,包括使用关键字追加和使用索引追加以及不同类型内表使用INSERT追加数据的不同效果
1052 1
SAP ABAP——内表(五)【追加内表数据—INSERT】
|
6月前
|
小程序 数据库
小程序连表查询(lookup
该文介绍了小程序实现连表查询的步骤。首先展示效果图,然后通过创建数据库表和云函数来完成连表查询,其中云函数使用了`aggregate`、`match`、`lookup`方法连接'zuowei'和'eara'表。接着,将云函数部署并调用,通过`wx.cloud.callFunction`获取查询结果。最后提醒读者点赞并邀请访问作者个人网站。
97 2
|
6月前
|
SQL 数据库
SQL FULL OUTER JOIN 关键字:左右表中所有记录的全连接解析
SQL RIGHT JOIN关键字返回右表(table2)中的所有记录以及左表(table1)中的匹配记录。如果没有匹配,则左侧的结果为0条记录。
152 0
|
SQL
SQL两张表中有关联id,但是字段名不同查询
SQL两张表中有关联id,但是字段名不同查询
76 0
|
SQL
**SQL某一表中重复某一字段重复记录查询与处理
sql某一表中重复某一字段重复记录查询与处理   1.查询出重复记录  select 重复记录字段 form  数据表 group by houseno having count(重复记录字段)>1 2.
955 0
|
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.
4636 0
|
SQL 关系型数据库 MySQL
这个大表走索引字段查询的 SQL 怎么就成全扫描了
这个大表走索引字段查询的 SQL 怎么就成全扫描了
这个大表走索引字段查询的 SQL 怎么就成全扫描了
|
SQL
SAP利用内表删除多条数据(自定义表)
之前博文提到了使用abap中的sql语句删除某一条自定义表中的记录。下面ji介绍一下,如何通过内表,一次性删除多行记录。自定义表的结构 FUNCTION ZFM_FI_ZFIT00200. *"----------------------------------------------------.
3297 0
|
SQL 关系型数据库 MySQL
mysql使用 from两表查询与join两表查询区别
在mysql中,多表连接查询是很常见的需求,在使用多表查询时,可以from多个表,也可以使用join连接连个表这两种查询有什么区别?哪种查询的效率更高呢? 带着这些疑问,决定动手试试1.先在本地的mysql上先建两个表one和twoone表 CREATE TABLE `one` ( `id`.
5543 0