无法在Spring Data Repository中创建自定义查询方法

时间:2018-10-03 09:59:39

标签: java hibernate spring-boot spring-data-jpa jhipster

我想创建自定义存储库:

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个共同的框架

1 个答案:

答案 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批注。