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

使用Spring数据JPA检查是否存在多个ID

傅阳
2023-03-14

类似于内置方法existsById,我想用Spring数据JPA创建一个existsAllById方法。为了实现这一点,我向repository界面添加了以下方法。

@Query(
  "select case when (count(thing) = size(:ids)) then true else false end " +
  "from Thing thing " +
  "where thing.id in :ids")
boolean existsAllById(@Param("ids") Set<UUID> ids);

然而,Hibernate似乎不喜欢我对大小的使用,并向我报告了以下错误:

引起:org.hibernate.hql.internal.ast.QuerySyntaException:意外的表达式?发现集合函数大小[选择大小写当(count)=size(: id))然后true否则false end fromlan.java:73的东西资源org.hibernate.engine.query.spi.在:id]在ache.getQuerySyntaEache.java:162(QuerySynaxEorg.hibernate.internal.)在ontract.getErrorTontract.java:613QueryException(ErrorTorg.hibernate.internal.)在ontract.createQueryTranslatorImpl.analyze(QueryTranslatorImpl.java:282)在org.hibernate.hql.internal.ast.QueryTranslatorImpl.do编译(QueryTranslatorImpl.java:192)在org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)在org.hibernate.engine.query.spi.HQLQueryPlan。(HQLQueryPcom.example.)在thing.idQueryPlanCorg.hibernate.hql.internal.ast.HQLQueryPlan(QueryPlanCxception.convert)在xception.java:74AbstractSharedSessionCorg.hibernate.hql.internal.ast.QueryPlan(AbstractSharedSessionCracker.throw)在racker.java:93AbstractSharedSessionCorg.hibernate.hql.internal.ast.

如何修复此查询?使用Spring Data JPA检查多个ID是否存在的最佳方法是什么?

共有1个答案

章丰茂
2023-03-14

您可以计算找到的项目的数量,然后将其与输入的大小进行比较。

注意,使用集合

Integer countAllByIdIn(Set<UUID> ids);

default boolean existsAllById(Set<UUID> ids) {
    return countAllByIdIn(ids).equals(ids.size());
} 

或者,您可以这样做,关键字是存在所有

Boolean existsAllByIdIn(Set<UUID> ids);
 类似资料:
  • 我想使用Spring JPA查询,使用两个参数检查DB是否已经存在给定运行日期和名称的记录: Sql Server数据库H2中的类型是一个字段。然而,我提供了字符串作为日期的参数,格式为。 上述内容对我来说不适用,我想知道如何使用JPQL和nativeQuery正确地编写它?

  • 问题内容: 我已经在互联网上搜索了几天,但找不到仅使用ODBC和SQL来解决此问题的通用方法。 有没有办法查看数据库是否已经存在,只能使用 ODBC 。它必须是标准SQL,因为用户可以选择自己选择的DSN(意味着他自己的SQL Server)。 这意味着我无法检查服务器上的主表,因为在不同的SQL服务器上它们的名称不同。 谢谢。 问题答案: 不知道这是否为时已晚,或者对于您来说足够“便携”。 我只

  • 问题内容: 因此,基本上,我想在注册表格中添加一个功能,该功能将检查数据库中是否已存在该用户名。 我对AJAX有几个问题- 1)我想创建一个AJAX请求on_change函数,所以像这样- 因此,据我所知,我必须在validation.php文件中包含所有在PHP中进行的验证,对吗?是否需要任何特殊的验证,或者只是使用sql语句进行的简单验证- 2)据我所知,我也必须通过$ .ajax传递POST

  • 我有一个Spring Boot应用程序,使用Spring Data JPA查询MySQL数据库。 我需要得到一份经过一些参数筛选的课程列表。 我通常使用语法

  • 问题内容: 建立连接后是否可以检查(MySQL)数据库是否存在。 我知道如何检查数据库中是否存在表,但是我需要检查数据库是否存在。如果没有,我必须调用另一段代码来创建它并填充它。 我知道所有这些听起来都不太优雅-这是一个快速又肮脏的应用程序。 问题答案: 如果您只想知道数据库是否存在,以免在尝试创建数据库时出错,只需使用(From here):

  • 问题内容: 我有一个嵌入了数据库的桌面应用程序。当我执行程序时,我需要检查特定的表是否存在,如果不存在则创建它。 给我的数据库一个名为conn的Connection对象,我该如何检查呢? 问题答案: 您可以使用可用的元数据: 有关更多详细信息,请参见此处。还要注意JavaDoc中的注意事项。