无法在 Spring 数据存储库中创建自定义查询方法
Can't create custom query method in Spring Data Repository
我想创建自定义存储库:
public interface FriendRepositoryCustom {
Page<Friend> findFriends(FriendCriteria friendCriteria, Pageable pageable);
}
及其实现:
@Repository
@Transactional(readOnly = true)
public class FriendRepositoryCustomImpl implements FriendRepositoryCustom {
@PersistenceContext
EntityManager entityManager;
@Override
public Page<Friend> findFriends(FriendCriteria friendCriteria, Pageable pageable) {
...
}
并将其添加到主存储库:
@Repository
public interface FriendRepository extends JpaRepository<Friend, Long>, JpaSpecificationExecutor<Friend>, FriendRepositoryCustom {
}
当我启动应用程序时出现此错误:
Caused by:
org.springframework.data.mapping.PropertyReferenceException: No
property findFriends found for type Friend! at
org.springframework.data.mapping.PropertyPath.(PropertyPath.java:77)
at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:329)
at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:309)
at
org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:272)
at
org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243)
at
org.springframework.data.repository.query.parser.Part.(Part.java:76)
at
org.springframework.data.repository.query.parser.PartTree$OrPart.(PartTree.java:247)
at
org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:398)
at
org.springframework.data.repository.query.parser.PartTree$Predicate.(PartTree.java:378)
at
org.springframework.data.repository.query.parser.PartTree.(PartTree.java:86)
at
org.springframework.data.jpa.repository.query.PartTreeJpaQuery.(PartTreeJpaQuery.java:70)
... 43 common frames omitted
您的实施命名可能 class 有误。
请注意,命名预期随 Spring Data 2.0 发生了变化。
对于 < 2.0,必须将实现命名为带有附加 Impl
后缀的最终存储库接口。 See the matching reference documentation for an example.
对于 >= 2.0,必须将实现命名为带有附加 Impl
后缀的自定义接口。 See the current reference documentation for an example.
注意:您不需要任何 @Repository
注释。
我想创建自定义存储库:
public interface FriendRepositoryCustom {
Page<Friend> findFriends(FriendCriteria friendCriteria, Pageable pageable);
}
及其实现:
@Repository
@Transactional(readOnly = true)
public class FriendRepositoryCustomImpl implements FriendRepositoryCustom {
@PersistenceContext
EntityManager entityManager;
@Override
public Page<Friend> findFriends(FriendCriteria friendCriteria, Pageable pageable) {
...
}
并将其添加到主存储库:
@Repository
public interface FriendRepository extends JpaRepository<Friend, Long>, JpaSpecificationExecutor<Friend>, FriendRepositoryCustom {
}
当我启动应用程序时出现此错误:
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findFriends found for type Friend! at org.springframework.data.mapping.PropertyPath.(PropertyPath.java:77) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:329) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:309) at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:272) at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243) at org.springframework.data.repository.query.parser.Part.(Part.java:76) at org.springframework.data.repository.query.parser.PartTree$OrPart.(PartTree.java:247) at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:398) at org.springframework.data.repository.query.parser.PartTree$Predicate.(PartTree.java:378) at org.springframework.data.repository.query.parser.PartTree.(PartTree.java:86) at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.(PartTreeJpaQuery.java:70) ... 43 common frames omitted
您的实施命名可能 class 有误。
请注意,命名预期随 Spring Data 2.0 发生了变化。
对于 < 2.0,必须将实现命名为带有附加 Impl
后缀的最终存储库接口。 See the matching reference documentation for an example.
对于 >= 2.0,必须将实现命名为带有附加 Impl
后缀的自定义接口。 See the current reference documentation for an example.
注意:您不需要任何 @Repository
注释。