Spring Data Jpa 异常:PropertyReferenceException: No property xx for type yy

本文记录了一次在实现Spring Data JPA仓储层时遇到的PropertyReferenceException异常及解决过程。通过调整方法访问权限修饰符,成功解决了Jpa未能正确识别实现类的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写完一个仓储层方法时,tomcat启动就抛出了一个异常,内容是:

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

定义的接口和实现类大致为:

public interface OrderRepository extends JpaRepository<Order, Long>{
	Pager<Order> getList(int pageSize, int pageNo);
}

public class OrderRepositoryImpl{
	Pager<Order> getList(int pageSize, int pageNo){
		return ...;
	}
}

想想平时也是这样,定义接口,然后定义约定的类,类名为接口名加上Impl后缀,这样调用方法时,Jpa可以自动调用实现类实现的方法。今天却不管用了。于是很纳闷,看起来没什么问题。这个异常,表名Jpa并没有找到我定义的类,而是把接口方法当成实体属性来判断了。为什么会找不到呢?仔细看,原来在实现类中的方法定义是从接口中拷出来的,方法使用缺省的访问权限修饰符(IDEA在定义接口中提示可以省略public)。于是想想是不是这个问题,加上修饰符public后,就不报错了。至于深层次的原因,还需要再看下,下回再做分享。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值