发布于 2015-03-22 10:58:16 | 1902 次阅读 | 评论: 1 | 来源: PHPERZ

这里有新鲜出炉的MyBatis教程,程序狗速度看过来!

MyBatis 基于Java的持久层框架

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。


错误描述

mybatis错误Exception in thread "main" org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Illegal overloaded getter method with ambiguous type for property tradeType in class class com.honzh.biz.database.entity.OrderBase.  This breaks the JavaBeans specification and can cause unpredicatble results.  

解决办法

以上问题是因为mybatis内部在进行Java反射的时候出现的问题,那么为什么会出现,因为Java会把Boolean类型的getter方法默认为is打头的或者是get打头的,如

public boolean isTradeType() {  
              
}  
          
public boolean getTradeType() {  
              
}  

以上两种方法,Java都会认为是bean的属性封装,那么在反射的时候,Java就不知道该get哪个tradeType了,如果解决呢,如果你的类中有

public Integer getTradeType() {  
  return tradeType;  
}  
          
public boolean isTradeType() {  
  if (StringUtils.isEmpty(getTradeType()) || (!isBuy() && isSale())) {  
    return false;  
  }  
  return true;  
}  

类似以上的方法存在,那么就要注意了,把boolean 的isTradeType方法重命名一下,如换成typeOfTradeType这样就好了,Java在反射的时候就不会区分不清是什么属性。



最新网友评论  共有(1)条评论 发布评论 返回顶部
qasrw 发布于2015-11-30 17:30:50
不懂
支持(1)  反对(0)  回复

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务