我有一个关于Spring Data/JPA的问题,我想知道是否有任何方法可以检查一个名称是否已经在数据库中注册了一些带有参数的函数。我有个想法 使用布尔值,但我不知道如何正确执行它以获得预期的结果。
@Query(nativeQuery= true, value="SELECT first_name FROM students WHERE first_name = :firstname") boolean findByFirstname(String firstname);
bvjveswy1#
JPA不支持EXISTS样式查询的布尔返回类型。但是,您可以通过创建一个default方法来解决这个问题,该方法具有所需的签名并调用JPA方法。
EXISTS
default
default boolean existsByFirstname(String firstname) { return !findByFirstname(firstname).isEmpty(); } @Query(nativeQuery= true, value="SELECT first_name FROM students WHERE first_name = :firstname") List<String> findByFirstname(String firstname);
91zkwejq2#
如参考文档中所述,您可以使用exists关键字并声明派生查询:
exists
boolean existsByFirstname(String firstname);
这将投射到标识符上,并检查是否至少返回了一个结果。
nwo49xxi3#
可能对于原生查询来说不是必需的。
List<String> findByNameIgnoreCaseContaining(String firstName);
在您的服务中,您可以使用if语句检查响应是否为空或与null不同。
3条答案
按热度按时间bvjveswy1#
JPA不支持
EXISTS
样式查询的布尔返回类型。但是,您可以通过创建一个
default
方法来解决这个问题,该方法具有所需的签名并调用JPA方法。91zkwejq2#
如参考文档中所述,您可以使用
exists
关键字并声明派生查询:这将投射到标识符上,并检查是否至少返回了一个结果。
nwo49xxi3#
可能对于原生查询来说不是必需的。
在您的服务中,您可以使用if语句检查响应是否为空或与null不同。