当前位置: 首页 > 面试题库 >

Spring Data JPA和存在查询

林元明
2023-03-14
问题内容

我正在使用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);

}

当我运行此查询时,我得到一个java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Boolean

如何使HQL查询看起来有效?我知道我可以简单地返回Long值,然后在Java代码中检查if count > 0,但是这种解决方法不是必需的,对吧?


问题答案:

我认为您可以简单地更改查询以将布尔值返回为

@Query("select count(e)>0 from MyEntity e where ...")

PS:如果您要检查是否存在基于主键值的CrudRepository已有exists(id)方法。



 类似资料:
  • 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

  • 我只想不使用xml,所以我需要非xml替代这些设置。这是我的POM。

  • 我的项目中的三个模型对象(本文末尾的模型和存储库片段)之间确实存在关系。 当我调用时,它会触发三个select查询: (“sql”) (对我来说)那是相当不寻常的行为。在阅读Hibernate文档后,我认为它应该始终使用连接查询。当类中的更改为时,查询没有区别(使用附加选择进行查询),当更改为时,城市类的查询也一样(使用JOIN进行查询)。 当我使用抑制火灾时,有两种选择: 我的目标是在所有情况下

  • 我有一个具有嵌套字段的文档: 测试数据。测试数据ID 我只想获取包含测试数据的文档。testDataId为空 以下是我的疑问: 但是我有和那些'testData'为空的文档。可以禁用吗? 例如:我有那3个文件 我希望只检索

  • 我目前正在开发一个具有核心模块和不同“扩展”模块的应用程序。核心模块包括基于Spring配置类的JPA配置以及一些“基本”实体及其存储库,这些实体和存储库将在“扩展”模块中使用。扩展模块包含额外的实体类和JPARepositories。启动扩展模块的JUnit测试时,我遇到以下错误: 为了做到这一点,我尝试了三种不同的方法: 创建了一个名为coreEntityManager和setPackages

  • 问题内容: 这是我在phpi中使用mysqli面向对象样式的简单查询: 这很好。我获得了从select语句检索的名称列表。 现在,在一段时间内,我想将该变量用作另一个查询的参数,但是mysqli不允许这样做,因为我必须关闭第一个查询,然后调用第二个查询。 因此,我认为我必须存储第一个查询的结果,然后遍历结果以调用新查询。 我尝试了以下方法: 但这是行不通的。永远不会到达while内的代码。 注意