无法在 Spring Data Repository 中创建自定义查询方法 [重复]
Posted
技术标签:
【中文标题】无法在 Spring Data Repository 中创建自定义查询方法 [重复]【英文标题】:Can't create custom query method in Spring Data Repository [duplicate] 【发布时间】:2019-03-08 12:48:06 【问题描述】:我想创建自定义存储库:
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:否 为类型 Friend 找到属性 findFriends!在 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】:您可能将实现类命名错误。
请注意,命名期望随着 Spring Data 2.0 的变化而改变。
对于 Impl 后缀。 See the matching reference documentation for an example.
对于 >= 2.0,必须将实现命名为自定义接口,并附加一个 Impl
后缀。 See the current reference documentation for an example.
注意:您不需要任何 @Repository
注释。
【讨论】:
以上是关于无法在 Spring Data Repository 中创建自定义查询方法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
无法将 Spring Data MongoDB + Spring Data JPA 与 Spring Boot 一起使用
Spring-Boot,无法使用 spring-data JPA 在 MySql 中保存 unicode 字符串
无法在 Spring Data Repository 中创建自定义查询方法 [重复]