今天用反射给对象赋值,有一个属性始终报错,主要错误信息如下:
遇到一个java.lang.NoSuchFieldException:错误
java.lang.NoSuchFieldException: topic_path
at java.lang.Class.getDeclaredField(Unknown Source)at com.thinkgem.jeesite.modules.common_jeesite.entity.PageUtil.getResults(PageUtil.java:219)
at com.thinkgem.jeesite.modules.exam.service.ExamManageServiceImpl.findAllExamEntity(ExamManageServiceImpl.java:70)
at com.thinkgem.jeesite.modules.exam.service.ExamManageServiceImpl$$FastClassBySpringCGLIB$$528d1bd1.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:718)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
错误原因:
实体类:属性和数据库字段名不一致
实体类
private Integer exam_id;//题库id(主键自增)
private String exam_name;//题库名字
private Integer type_id;//类型id
private String exam_desc;//题库描述
private String exam_path;//考题路径
private String create_time;//创建时间
数据库
解决办法:
1、修改对象属性
2、给查询出的字段加别名和实体类属性名一致