当前位置: 首页 > 知识库问答 >
问题:

findBy/findAllBy之间的Spring数据JPA差异

盖辉
2023-03-14

使用Spring Data JPA关键字时,以下两者之间是否存在任何差异:

List<SomeEntity> findBySomeCondition();

List<SomeEntity> findAllBySomeCondition();

共有3个答案

华欣荣
2023-03-14

一个不同之处是,对于findAllBy Hibernate,应用了过滤器(@filters from org.Hibernate.annotations),因此使用了不同的sql。

吕新
2023-03-14

为了说明差异,让我们来看看这两个函数:

1. Set<Policy> findAllByRoleIn(Iterable<Role> role);

2. Set<Policy> findByRoleIn(Iterable<Role> role);

第1个函数生成的查询:

1.  select policy.id, policy.role from policy where (policy.role in (? , ? , ? , ?))

第二个函数生成的查询:

2. select policy.id, policy.role from policy where (policy.role in (? , ? , ? , ?))

结论:很明显,如果我们看看这两个函数生成的查询。我们可以清楚地看到,两个函数定义之间没有区别,它们执行完全相同的查询。

谷梁玺
2023-03-14

不,它们之间没有区别,它们将执行完全相同的查询,当从方法名导出查询时,Spring Data将忽略All部分。唯一重要的位是By关键字,它后面的任何内容都被视为字段名(除了其他关键字,如OrderBy,这可能会导致一些奇怪的方法名称,如findAllByOrderByIdAsc)。

这意味着这样的东西是完全有效的:

List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();

并将执行完全相同的SQL查询:

List<SomeEntity> findBySomeCondition();

或者

List<SomeEntity> findAllBySomeCondition();

Spring数据2.3.6版本的文档讨论了此功能:

fine(或其他引入关键字)和By之间的任何文本都被认为是描述性的,除非使用结果限制关键字之一,如区分在要创建的查询上设置不同的标志或top/First限制查询结果。

在一篇关于即将发布的SpringData 2.0版本的博客文章中解释了该功能的用途:

Spring数据的方法解析使用前缀关键字,如findexistscount、和delete,以及终止By关键字。在findBy之间输入的所有内容都会使方法名更具表现力,并且不会影响查询派生。

 类似资料:
  • 问题内容: 使用Spring Data JPA关键字之间有什么区别: 和 问题答案: 不,它们之间没有区别,它们将执行完全相同的查询,当从方法名称派生查询时,Spring Data会忽略该部分。唯一重要的位是关键字,其后的所有内容均被视为字段名称(其他关键字(如偶然会导致某些奇怪的方法名称)之类的关键字除外)。 这意味着这样的事情是完全正确的: 并将执行与以下命令完全相同的SQL查询: 要么 更新

  • 本文向大家介绍数据路径之间的差异,包括了数据路径之间的差异的使用技巧和注意事项,需要的朋友参考一下 数据路径 CPU有两个部分,数据部分和控制部分。数据部分也称为数据路径。寄存器,ALU和互连总线共同构成一条数据路径。数据路径分为三种类型: 单周期 多周期 管道 以下是单周期,多周期和管道数据路径之间的一些重要区别。 序号 键 单周期 多周期 管道 1 单周期具有一个CPI(每个指令的时钟周期)。

  • 得到一些问题与桌子布线。我需要为每个用户uniq购物车,在那里我将存储书籍。 当我在DB中打开AppUser表时,“cart_id”列始终为NULL。 购物车表只有id列-不确定是否应该这样 谢谢! 购物车

  • 我使用Spring boot反应式web流量作为restendpoint。 以下两者之间的区别是什么: 到 我不理解我的控制器方法在输入参数上的差异。我知道一个是pojo,另一个是mono,但从反应的角度来看,这意味着什么?

  • 问题: 1) 和之间的差异? 我已经读到,这两种方法都消除了将代码连接到XML中的必要性,但没有得到它们之间的区别。 2) 、和之间有什么区别? -何时使用哪一种? -每种方法的优缺点是什么?

  • 我们正计划使用liquibase来维护一些参考数据(dataset少于20k行)。数据将在QC环境中更新和验证,我们希望使用LiquiBase将更改转移到prod。 我使用带有difftypes=data的generateChangeLog