我正在为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
)中找到存储库方法,当然这不应该包含在内部。
如何解决这个问题?
答案 0 :(得分:0)
你所命名的VariableRepoCustom / VariableRepoCustomImpl实际上应该是一个服务(而不是spring-data-jpa方面的存储库)。
JPA搜索路径中不应存在VariableRepoCustom接口,以防止JPA生成实现
答案 1 :(得分:0)
我认为可能是您的存储库impl没有@Repository注释。请将repository和impl都设为@Repository。它应该解决你的问题。
为了获得最佳实践,无需将VariableRepo
接口自动装入impl类。
编辑: 同时从impl中删除自定义。该名称将通过追加impl为RepoName。它的定义类似于VariableRepoImpl