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

时间:2013-01-07 16:59:10

标签: spring-data

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

我想有一个像这样的方法:

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

其中属性个人资料的字段。

解决方法是使用custom-implementation。但appendix定义存在为关键字。有人可以举个例子来说明如何使用这个关键字吗?

2 个答案:

答案 0 :(得分:8)

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

所以你正在寻找的似乎是(Is)Null关键字,当前的限制是它会返回对象,你必须检查返回的列表中的内容。有一个ticket可以添加对派生查询方法的投影的支持,您可能需要遵循这些方法以获得进一步的进展。

答案 1 :(得分:0)

使用Spring Data的Query by example功能可以获得类似的结果,here就是一个例子。