【mybatis】There is no setter for property named xxx

LittleLeeZi 2014-06-19 04:21:22
异常详细信息如下,报错的位置是User类的uId属性的setter方法,可是我很确定setter方法没问题。更加诡异的是如果我把uId的getter和setter方法全删掉,再写一遍,然后重新部署,竟然没问题了。然后等我再用一会,重启了几次后,这个异常 又会蹦出来。大神们有什么想法,快被这个问题整吐了。
另我一个同时说是Driver和User对应的两张表的主键名称相同(都是u_id)造成的,driver表外键引用user表

org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'uId' in 'class com.yuedao.car.entity.User'
at org.apache.ibatis.reflection.Reflector.getSetInvoker(Reflector.java:372)
at org.apache.ibatis.reflection.MetaClass.getSetInvoker(MetaClass.java:174)
at org.apache.ibatis.reflection.wrapper.BeanWrapper.setBeanProperty(BeanWrapper.java:167)
at org.apache.ibatis.reflection.wrapper.BeanWrapper.set(BeanWrapper.java:57)
at org.apache.ibatis.reflection.MetaObject.setValue(MetaObject.java:133)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyPropertyMappings(DefaultResultSetHandler.java:368)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:745)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForNestedResultMap(DefaultResultSetHandler.java:713)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:264)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:236)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:150)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:60)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:73)
at org.apache.ibatis.executor.ReuseExecutor.doQuery(ReuseExecutor.java:57)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:120)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
at $Proxy12.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:119)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
at $Proxy58.selectUsersOfPage(Unknown Source)
at com.yuedao.car.service.impl.UserServiceImpl.getUserList(UserServiceImpl.java:24)
at com.yuedao.car.controller.UserController.list(UserController.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)

...全文
11819 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
jesswight 2017-03-15
  • 打赏
  • 举报
回复
楼主这个实体类有没有用Mybatis重新生成过,是不是User类的uId属性在数据库中修改过名称或者数据类型,然后重新生成的User类
Java_er 2016-12-08
  • 打赏
  • 举报
回复
mybatis是我见过的最恶心的持久化工具,没有之一。
asfu520 2016-07-13
  • 打赏
  • 举报
回复
引用 21 楼 lkl713 的回复:
楼上各位,我是提主,这个问题已经过去很久了,至今为止没有找到合理的解释
你把查询的每一个字段都加上别名试试,我是每次都这样解决的
asfu520 2016-05-19
  • 打赏
  • 举报
回复
我遇到同样的问题,两张表,我a表示select * ,我把字段全部列出来就好了。
qq_28573739 2016-05-12
  • 打赏
  • 举报
回复
引用 21 楼 lkl713 的回复:
楼上各位,我是提主,这个问题已经过去很久了,至今为止没有找到合理的解释
我也遇到同样的问题了, <result column="knowledge_points_id" property="knowledge_points_id" jdbcType="VARCHAR" />原因是property的值与实体不一样,重生复制写一下,在重写get set方法就好了,不知道楼主什么毛病
LittleLeeZi 2016-04-21
  • 打赏
  • 举报
回复
楼上各位,我是提主,这个问题已经过去很久了,至今为止没有找到合理的解释
q7413755 2016-04-18
  • 打赏
  • 举报
回复
刚开始玩java,发现mybatis寻找getter和setter的时候,是用的你的resultMap中property 属性值去查找的,所以请property 的值与 所绑定的model中的属性 大小写相符。
OnLookingBack 2015-06-06
  • 打赏
  • 举报
回复
我也遇到这样的问题,楼主处理好了没有呀!不用resultMap就行了,但是我想知道这个问题是为什么
Kingsley_ 2015-05-14
  • 打赏
  • 举报
回复
我今天也出现了同样的问题:SSM项目,控制台显示我的实体类某个元素没有Getter方法,然而实际上getter和setter方法都是有的,我已开始写的时候就自动生成了的,仔细检查后发现并没有错。感觉有点无厘头的感觉,题主和各位大神有解决这个问题吗? 求教
大胖打豆豆 2015-02-27
  • 打赏
  • 举报
回复
问题解决了吗,yd_admin 这个项目的源码,在我这边了,还是会存在这个问题的
tiger呢喃 2014-11-28
  • 打赏
  • 举报
回复
同样的犯病了 , 哥们求救
放羊娃安浩 2014-10-28
  • 打赏
  • 举报
回复
type、resultMap 好好审查一下,应该是这两个中的一个有错误
业余草 2014-06-23
  • 打赏
  • 举报
回复
resultMap用的很少,你看看type="User"找得到不,还有和数据库的字段的映射关系正确不
LittleLeeZi 2014-06-23
  • 打赏
  • 举报
回复
引用 12 楼 xmt1139057136 的回复:
这个算是很简单的了,就是说实体类中,有一个字段,没有get/set方法。
要真这么简单就好了,你看看上面我回答别人的
业余草 2014-06-20
  • 打赏
  • 举报
回复
这个算是很简单的了,就是说实体类中,有一个字段,没有get/set方法。
LittleLeeZi 2014-06-19
  • 打赏
  • 举报
回复
引用 10 楼 u012353086 的回复:
你的set方法看着不对啊 应该是:setUId();getUId(); 方法中u应该是大写的吧


package com.yuedao.car.entity;

public class User{
private int id;
private String pwd;
private String mobileNo;
private String userName;
private int sex;
private String registTime;
private String email;
private String photoPath;//照片路径
private int userType;
private int status;
private String shareNo;//分享码
private String token;//用户令牌
private Account account;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getMobileNo() {
return mobileNo;
}
public void setMobileNo(String mobileNo) {
this.mobileNo = mobileNo;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getRegistTime() {
return registTime;
}
public void setRegistTime(String registTime) {
this.registTime = registTime;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhotoPath() {
return photoPath;
}
public void setPhotoPath(String photoPath) {
this.photoPath = photoPath;
}
public int getUserType() {
return userType;
}
public void setUserType(int userType) {
this.userType = userType;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getShareNo() {
return shareNo;
}
public void setShareNo(String shareNo) {
this.shareNo = shareNo;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
}

现在改成这种了,大小写没问题了,但是还是出这个错误。最有可能的就是user和driver表做了关联,但user和driver表的主键字段都是u_id,而我的select语句写的是select *,这样查出的结果中有两个u_id,不知道赋值给哪个了
小强码农 2014-06-19
  • 打赏
  • 举报
回复
你的set方法看着不对啊 应该是:setUId();getUId(); 方法中u应该是大写的吧
tony4geek 2014-06-19
  • 打赏
  • 举报
回复
没有id 的 set/get 方法。
LittleLeeZi 2014-06-19
  • 打赏
  • 举报
回复
引用 7 楼 rui888 的回复:
    public void setuId(int uId) {         this.uId = uId;     }     public int getuId() {         return uId; 你 set/get 方法不是工具生成的吗。 把get/set 全删除掉,重新生成一遍。
也不行啊,我把uId改成id,这样大小写不会有问题了吧,结果出现下面的异常

org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.yuedao.car.entity.User' with value '1' Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'id' in 'class com.yuedao.car.entity.User'
	org.apache.ibatis.reflection.wrapper.BeanWrapper.setBeanProperty(BeanWrapper.java:175)
	org.apache.ibatis.reflection.wrapper.BeanWrapper.set(BeanWrapper.java:57)
	org.apache.ibatis.reflection.MetaObject.setValue(MetaObject.java:133)
	org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyPropertyMappings(DefaultResultSetHandler.java:368)
	org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:745)
	org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForNestedResultMap(DefaultResultSetHandler.java:713)
	org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:264)
	org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:236)
	org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:150)
	org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:60)
	org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:73)
	org.apache.ibatis.executor.ReuseExecutor.doQuery(ReuseExecutor.java:57)
	org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
	org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
	org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:120)
	org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
	org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:601)
	org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
	$Proxy12.selectList(Unknown Source)
	org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198)
	org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:119)
	org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
	org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
	$Proxy58.selectUsersOfPage(Unknown Source)
	com.yuedao.car.service.impl.UserServiceImpl.getUserList(UserServiceImpl.java:24)
	com.yuedao.car.controller.UserController.list(UserController.java:42)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:601)
	org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
	org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
	org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
	org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
	org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
tony4geek 2014-06-19
  • 打赏
  • 举报
回复
    public void setuId(int uId) {         this.uId = uId;     }     public int getuId() {         return uId; 你 set/get 方法不是工具生成的吗。 把get/set 全删除掉,重新生成一遍。
加载更多回复(6)

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧