我的通用基本存储库定义如下:
@NoRepositoryBean
public interface IBaseRepository<Template extends BaseModel, Id > extends
ElasticsearchRepository<Template,Id>, ICustomRepository{
}
我的icustomrepository接口定义如下:
@Repository
public interface ICustomRepository {
void someCustomFunction();
}
public class CustomRepositoryImpl implements ICustomRepository{
@Override
void someCustomFunction(){
}
}
现在,当我将baserepository用作:
@Repository
public interface OrderRepository extends BaseRepository<OrderModel,Long>{
}
当我在我的服务类中自动连接orderepository时,它会给出编译错误:
原因:org.springframework.beans.factory.beancreationexception:创建名为'orderrepository'的bean时出错,该bean在.example.orderrepository中定义,在elkapplication上声明@enablelasticsearchrepositories:init方法调用失败;嵌套异常为org.springframework.data.mapping.propertyreferenceexception:找不到类型ordermodel的属性somecustomfunction!
有人能告诉我哪里出了问题,怎么解决吗?
1条答案
按热度按时间esbemjvw1#
将注解转换为答案
icustomrepo公司
ibaserepository公司
订单存储库
orderrepository是一个存储库接口,bean是由Springbean处理器创建的,但是
OrderRepository
不执行someCustomFunction
甚至spring也不知道它的实现,除非它知道它已经被CustomRepositoryImpl
所以在引导/启动时,spring抛出了一个错误。因此,与其仅仅定义
someCustomFunction
我们需要把这个落实到ICustomRepository
,由于Java8,我们也可以在接口中实现该方法这段代码可以很好地工作,jdk和其他代理也可以在这个方法上工作,我们也可以在上面应用aop
someCustomFunction
.如果同时使用
default
以及@Override
.