1. ホーム
  2. java

[解決済み] Spring Data JPAとExistsクエリ

2023-06-25 01:35:41

質問

Spring Data JPA (JPAプロバイダはHibernate)を使用しています。 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コードで count > 0 をチェックすることもできますが、そのような回避策は必要ないはずですよね?

どのように解決するのですか?

単純に、クエリがブール値を返すように変更すればよいと思います。

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

PS: 主キーの値に基づいて存在を確認する場合 CrudRepository にはすでに exists(id) メソッドを持っています。