我想创建自定义存储库:
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 {
}
启动应用程序时出现此错误:
原因: org.springframework.data.mapping.PropertyReferenceException:否 属性findFriends发现为Friend类型!在 org.springframework.data.mapping.PropertyPath。(PropertyPath.java:77) 在 org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:329) 在 org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:309) 在 org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:272) 在 org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243) 在 org.springframework.data.repository.query.parser.Part。(Part.java:76) 在 org.springframework.data.repository.query.parser.PartTree $ OrPart。(PartTree.java:247) 在 org.springframework.data.repository.query.parser.PartTree $ Predicate.buildTree(PartTree.java:398) 在 org.springframework.data.repository.query.parser.PartTree $ Predicate。(PartTree.java:378) 在 org.springframework.data.repository.query.parser.PartTree。(PartTree.java:86) 在 org.springframework.data.jpa.repository.query.PartTreeJpaQuery。(PartTreeJpaQuery.java:70) ...省略了43个共同的框架
答案 0 :(得分:7)
您可能将实现类命名为错误。
请注意,命名期望随着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
批注。