net.sf.cglib.beans.BulkBeanException 解决办法
2015-03-20 22:08
363 查看
最近在用 ibatis 的时候,抛出了这样一个异常,还是头一次见这个异常。对于不认识的东西第一反应就是 Google ,把这个异常原封不动的粘到搜索框中,找到了这样的一条链接:http://ibatis.10938.n7.nabble.com/problem-returning-primitive-types-from-a-query-td11676.html
在文章中找到这样一段话:
< I’m guessing the values in the database are null. If they are, the
result map types have to be wrapped - you can’t represent null in a
primitive, even with boxing.
< If that is not adequate, your other option is to make the SQL provide a default value for null values.
这段话的大意就是:
数据库中的字段有 nul 值。如果是的话, ibatis result map 中的映射类型必须是包装类型(Integer 是包装类型,int 是原生类型)。因为我们不能用 null 来代表一个原生对象(int num = null; 这样是不合法的)。
把原生类型改为包装类型还不行的话,还有个选择就是为数据库中的 null 值提供一个默认类型。
看到这里,我已经明白发生异常的原因了。数据库中的记录最终得通过 result map 映射为 Java bean ,数据库中的每一个列都映射为 bean 中的一个属性。而我的 bean 的一些属性为 int 类型,是原生类型。这些原生类型是不能被赋 null 值的,比如 int num = null;这样的代码是不合法的。问题的本质原因已经找到了,问题就好解决了。我试过老外的那两种解决办法,都能行得通。
1、把 int 改为 Integer。
2、也可以给数据库中的 null 值设置个默认值。
但我感觉这两种方法都不太好,改动比较大。大家一块写代码,怕我的改动影响到了别人的代码。为了把影响减到最小,再次 Google 了下,发现可以在 sqlMap 映射文件中给返回的 null 值设置默认的值。比如,可以这样设置:
设置 nullValue=”something”。至此,问题完美解决,遇到问题,应该多动手,勤动脑,总能找到最优的解决方案。
在文章中找到这样一段话:
< I’m guessing the values in the database are null. If they are, the
result map types have to be wrapped - you can’t represent null in a
primitive, even with boxing.
< If that is not adequate, your other option is to make the SQL provide a default value for null values.
这段话的大意就是:
数据库中的字段有 nul 值。如果是的话, ibatis result map 中的映射类型必须是包装类型(Integer 是包装类型,int 是原生类型)。因为我们不能用 null 来代表一个原生对象(int num = null; 这样是不合法的)。
把原生类型改为包装类型还不行的话,还有个选择就是为数据库中的 null 值提供一个默认类型。
看到这里,我已经明白发生异常的原因了。数据库中的记录最终得通过 result map 映射为 Java bean ,数据库中的每一个列都映射为 bean 中的一个属性。而我的 bean 的一些属性为 int 类型,是原生类型。这些原生类型是不能被赋 null 值的,比如 int num = null;这样的代码是不合法的。问题的本质原因已经找到了,问题就好解决了。我试过老外的那两种解决办法,都能行得通。
1、把 int 改为 Integer。
2、也可以给数据库中的 null 值设置个默认值。
但我感觉这两种方法都不太好,改动比较大。大家一块写代码,怕我的改动影响到了别人的代码。为了把影响减到最小,再次 Google 了下,发现可以在 sqlMap 映射文件中给返回的 null 值设置默认的值。比如,可以这样设置:
<result column="USER_TYPE" jdbcType="INTEGER" property="userType" nullValue="-3" />
设置 nullValue=”something”。至此,问题完美解决,遇到问题,应该多动手,勤动脑,总能找到最优的解决方案。
相关文章推荐
- Cause: net.sf.cglib.beans.BulkBeanException 之解决方法
- Cause: net.sf.cglib.beans.BulkBeanException 之解决方法
- Cause: net.sf.cglib.beans.BulkBeanException 之解决方法
- Cause: net.sf.cglib.beans.BulkBeanException 解决方法
- Ibatis查询报错:net.sf.cglib.beans.BulkBeanException异常
- 异常:net.sf.cglib.beans.BulkBeanException
- net.sf.cglib.beans.BulkBeanException错误
- 异常处理:net.sf.cglib.beans.BulkBeanException
- Cause: net.sf.cglib.beans.BulkBeanException; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
- org.springframework.beans.factory.BeanCreationException异常原因及解决办法
- Could not initialize class net.sf.cglib.proxy.Enhancer解决办法
- org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'shiroFilter' 错误解决办法
- json-lib 出现net.sf.json.JSONException: There is a cycle in the hierarchy异常的解决办法
- Could not initialize class net.sf.cglib.proxy.Enhancer解决办法
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 解决办法
- 抛出 net.sf.jasperreports.engine.JRException: Resource not found at: xxx.jasper 异常的解决办法
- net.sf.json.JSONException: There is a cycle in the hierarchy!的解决办法
- net.sf.cglib.beans.BeanCopier用途 +参数解释
- Feign 调用出现的net.sf.json.exception:Unquotted String错误,解决办法。
- net.sf.json.exception:Unquotted String错误,解决办法。