如何从Spring Data JPA中的cusom存储库访问主存储库?

时间:2017-04-23 16:48:32

标签: java spring spring-data-jpa

我正在为public interface VariableRepo extends CrudRepository<Variable, Long>, VariableRepoCustom { Variable getByName(String name); } public interface VariableRepoCustom { ... Variable getPopulationSingle(); ... } public class VariableRepoCustomImpl implements VariableRepoCustom { private final VariableRepo variableRepo; @Autowired public VariableRepoCustomImpl(VariableRepo variableRepo) { this.variableRepo = variableRepo; } @Override public Variable getPopulationSingle() { return getByName("Population single"); } ... } 表编写存储库,并希望用它访问特定的行。为此,我试图将主存储库自动装入自定义实现,如下所示:

Variable

不幸的是,Spring喜欢对此发疯,抛出异常:

  

创建名为'variableRepo'的bean时出错:调用init   方法失败;嵌套异常是   org.springframework.data.mapping.PropertyReferenceException:没有   找到属性getPopulationSingle类型变量!

即。它试图在实体类(npm install --save line-intersect )中找到存储库方法,当然这不应该包含在内部。

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

你所命名的VariableRepoCustom / VariableRepoCustomImpl实际上应该是一个服务(而不是spring-data-jpa方面的存储库)。

JPA搜索路径中不应存在VariableRepoCustom接口,以防止JPA生成实现

答案 1 :(得分:0)

我认为可能是您的存储库impl没有@Repository注释。请将repository和impl都设为@Repository。它应该解决你的问题。

为了获得最佳实践,无需将VariableRepo接口自动装入impl类。

编辑: 同时从impl中删除自定义。该名称将通过追加im​​pl为RepoName。它的定义类似于VariableRepoImpl