我正在使用Spring Data JPA(使用Hibernate作为我的JPA提供程序),并希望定义一个exists
方法,附带一个HQL查询:
public interface MyEntityRepository extends CrudRepository<MyEntity, String> {
@Query("select count(e) from MyEntity e where ...")
public boolean existsIfBlaBla(@Param("id") String id);
}
HQL查询的外观如何才能使其正常工作?我知道,如果count>0
,我可以简单地返回一个长值,然后在我的Java代码中检查,但是这种变通方法不应该是必要的,对吗?
我认为您可以简单地更改查询以返回布尔值为
@Query("select count(e)>0 from MyEntity e where ...")
PS:如果您正在检查基于主键值的existsCrudRepository
已经有exists(id)
方法。
问题内容: 我以前是这样写我的EXISTS检查的: 前一世代的DBA告诉我,当我做一个子句时,请使用而不是 这真的有区别吗? 问题答案: 不,SQL Server很聪明,并且知道它已用于EXISTS,并且不向系统返回任何数据。 Quoth Microsoft:http ://technet.microsoft.com/en- us/library/ms189259.aspx?ppud =4 由EX
问题内容: 以下两个查询是子查询。两者相同,都对我有效。但是问题是方法1的查询大约需要10秒才能执行,而方法2的查询不到1秒。 我能够将方法1的查询转换为方法2,但是我不了解查询中正在发生什么。我一直想自己弄清楚。我真的很想了解以下两个查询之间的区别是什么,以及如何获得性能提升?它背后的逻辑是什么? 我是这些高级技术的新手。我希望有人能在这里帮助我。考虑到我阅读的文档并没有给我任何提示。 方法1:
SpringDataJpa中 Specification怎样使用in查询 实体类Menu.java如下 想通过roles属性做in查询,代码如下 错误如下: Parameter value [com.appmtce.pojo.entity.role.Role@20f81e2a] did not match expected type [java.util.Collection (n/a)] 我的S
问题内容: 有没有一种方法可以改善这种SQL查询性能: 问题是当我的表中有许多数据(如百万行)时,子句的执行非常慢。我必须执行此验证,因为我无法插入重复的数据。 我使用SQLServer 2005 谢谢 问题答案: 确保您正在搜索索引列,而没有操纵这些列中的数据(例如子字符串等)
描述 (Description) 如果指定的散列或数组键存在,则此函数返回true,无论相应的值如何,即使它是.sunf。 如果EXPR是一个子程序,那么如果子程序已被声明(但不一定是已定义),则exists将返回1,否则返回0。 如果LIST是多个参数,或者是具有多个值的数组,则直接执行该命令而不使用shell。 语法 (Syntax) 以下是此函数的简单语法 - exists EXPR 返回
EXISTS key 检查给定 key 是否存在。 可用版本: >= 1.0.0 时间复杂度: O(1) 返回值: 若 key 存在,返回 1 ,否则返回 0 。 redis> SET db "redis" OK redis> EXISTS db (integer) 1 redis> DEL db (integer) 1 redis> EXISTS db (integer) 0