以下のように、named queryではないのにうっかりname
にJPQLを指定しまうと、一見不可解な実行時エラーが発生する。
@Repository
public interface SampleRepository extends JpaRepository<Sample, Long> {
@Query(name = "select s from Sample s")
List<Sample> list();
}
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property list found for type Sample!
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:94) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:382) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:358) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
落ち着いてみれば、単にそんなnameのnamed queryは無いですよ、というエラーなのだが、正しくJPQLを指定してるつもりなのに実行時エラーになって焦ってしまった……のでメモを残しておく。
正しくはvalue
にJPQLを指定すればよい。
@Query("select s from Sample s")
List<Sample> list();