为什么我得到一个带有methodname的PropertyReferenceException?

时间:2015-12-09 22:58:26

标签: java spring hibernate maven

当我尝试构建我的maven项目时,我得到以下Exception:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'performanceDao': 
Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: 
No property customSearch found for type Performance!

我正在使用带有hibernate和java 1.8的Spring。 我只是想创建自己的查询方法。

异常本身对我没有意义,因为我没有属性customSearch,customSearch是我的方法。我已经尝试了其他方法名称和我可以通过谷歌找到的东西。

我认为它与类的命名约定有关。

相关的最小代码部分是:

存储库:

@Repository
public interface PerformanceDao extends JpaRepository<Performance,Integer>,PerformanceRepositoryCustom {
}

自定义界面:

public interface PerformanceRepositoryCustom {
    public List<Performance> customSearch(Performance x, Integer durationDiff);
}

接口实现:

@Repository
public class PerformanceRepositoryImpl implements PerformanceRepositoryCustom {

    @PersistenceContext
    private EntityManager entityManager;

    public PerformanceRepositoryImpl() {
        super();
    }

    @Override
    public List<Performance> customSearch(Performance x, Integer durationDiff){
        return null;
    }

}

1 个答案:

答案 0 :(得分:2)

你是对的:问题在于你的类型的命名。

您必须将PerformanceDao接口重命名为PerformanceRepository,因此您有以下类型:

  • PerformanceRepository
  • PerformanceRepositoryCustom
  • PerformanceRepositoryImpl