如何使用 Spring Data 中的 exists 关键字来检查实体是不是存在?

Posted

技术标签:

【中文标题】如何使用 Spring Data 中的 exists 关键字来检查实体是不是存在?【英文标题】:How to use the exists keyword in Spring Data to check for the existence of an entity?如何使用 Spring Data 中的 exists 关键字来检查实体是否存在? 【发布时间】:2012-12-21 10:50:24 【问题描述】:

如何在查询方法中使用 Spring Data 中的 'exists' 关键字?

我想要一个这样的方法:

public interface ProfileRepository extends JpaRepository<Profile, Long> 
  boolean existsByAttribute(String attribute);

其中AttributeProfile的一个字段。

解决方法是使用custom-implementation。但是appendix 定义为关键字存在。谁能给我一个例子如何使用这个关键字?

【问题讨论】:

【参考方案1】:

记录的关键字旨在与属性引用结合使用。因此,EXISTS 在这种情况下的语义是它检查属性是否存在。请注意,文档的一部分是从 Spring Data Commons 中提取的,并且在那里列出的关键字并不意味着 Spring Data JPA 支持它(在您链接的部分的第一段中表示)。 Exists 不受 Spring Data JPA 支持,因为它仅在 MongoDB 中才有意义,例如,不完全存在的字段与逻辑上具有 null 值的可用字段之间存在差异。

因此,您要查找的内容似乎与 (Is)Null 关键字有关,当前的限制是它会返回对象,并且您必须检查返回的列表中的内容。有一个 ticket 可以添加对派生查询方法的投影的支持,您可能希望进一步了解这些方法。

【讨论】:

它是否仍然不受支持,因为文档暗示相反。我检查了 common docs 和 jpa,它都包含在两者中。

以上是关于如何使用 Spring Data 中的 exists 关键字来检查实体是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章

使用 spring-data-jpa 获取这些数据如何更正确?

spring-boot-starter-data-jpa 中的 Eaxmple 如何使用

如何使用Spring Data可伸缩地将元素插入MongoDB中的集合字段?

Spring-Data-JPA 中的查询如何动态组装条件?

如何在本机查询中使用 NVL 或 COALESCE 获取 Spring Data JPA 中的值列表

如何使每个表中的主键值应从数字一(1)开始 - PostgreSQL,Spring data jpa