我有一个存储库:
犬:
public interface DogRepository extends JpaRepository<Dog, Long> {
@Query("select d from Dog d where ?1 MEMBER OF d.owners")
List<Dog> findAllForUser(String user);
@Query("select d from Dog d where ?1 MEMBER OF d.owners and d.id = ?2")
Dog findOneForUser(String user, Long id);
}
我想要一个强制创建findAllForUser和findOneForUser的RestrictedRepository:
@NoRepositoryBean
public interface RestrictedRepository<T, ID extends Serializable> extends JpaRepository<T, ID>{
List<T> findAllForUser(String user)
T findOneForUser(String user, Long id);
}
我希望Dog存储库扩展它而不是JpaRepository。但是每次我这样做都会得到例外:
org.springframework.data.mapping.PropertyReferenceException:找不到类型Dog的属性findOneForUser!
从RestrictedRepository中删除findOneForUser方法可以解决此问题,我的findAllForUser可以按预期工作。
https://github.com/imduffy15/spring-boot-sample-data-jpa处可用的完整代码示例导致异常的代码已被注释掉。
导致这些例外的原因是什么,我该如何修复或解决它?
答案 0 :(得分:0)
在Twitter上的@thought_forge得到了答案。
转到:
@NamedQuery(name="Dog.findOneForUser", query="select d from Dog d where ?1 MEMBER OF d.owners and d.id = ?2")
在域资源而不是存储库上,异常消失,应用程序按预期执行。
可能是@Query的错误。
我将相应地更新链接的github示例。