hibernate的setting property value 异常

本文探讨了在Java POJO中使用Wrapper类型而非原始类型的必要性,特别是在与数据库交互时,以避免因数据库字段为NULL而导致的异常问题。通过一个具体的例子说明了这一实践的重要性。

将pojo的属性设置为wrapper类型(Integer,Long,String),而不是primitive类型(int,long,string),否则当数据库相关字段为null时,查询后给类属性赋值时会出现异常。

如oracle中表字段类型为number,通过myeclipse自动映射为long型的类属性,如果表中此字段值为null,则查询时会出现异常:

exception setting property value with CGLIB(set hibernate.cglib.use_reflection_optimizer=false for more info) setter of ……

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="callSettersOnNulls" value="true" /> <!-- 在全局范围内"启用或禁用任何高速缓存" - 应该是除了session;默认值true --> <setting name="cacheEnabled" value="false" /> <!-- 是否允许一个statement返回多个ResultSets,但是需要驱动程序支持。默认值true --> <setting name="multipleResultSetsEnabled" value="true" /> <!-- 是否可以使用别名获取,具体取决于驱动程序是否支持。默认为true --> <setting name="useColumnLabel" value="true" /> <setting name="autoMappingBehavior" value="PARTIAL" /> <!-- 默认执行方式。三种方式:SIMPLE默认没有特殊处理;REUSE重用PreparedStatements;BATCH重用statements和进行批量更新。默认值:SIMPLE --> <setting name="defaultExecutorType" value="SIMPLE" /> <!-- 设置Statement默认数据库响应超时时间,单位为妙。 --> <!-- <setting name="defaultStatementTimeout" value="5000" /> --> <!-- 嵌套结果映射,是否使用rowbounds进行分页,建议不要使用rowbounds进行分页,特别是SQL执行返回结果很大的情况下(因为它用的是返回后截取-逻辑分页)。默认值false --> <setting name="safeRowBoundsEnabled" value="false" /> <!-- 进行自动映射时,数据以下划线命名,如数据库返回的"order_address"命名字段是否映射为class的"orderAddress"字段。默认为false --> <setting name="mapUnderscoreToCamelCase" value="false" /> <!-- MyBatis使用本地缓存来提高重复查询的速度。两个选项:SESSION,和我们hibernate里的session类似,在同一个session中共享;STATEMENT,只在同一个statement中共享。默认值SESSION --> <setting name="localCacheScope" value="SESSION" /> <!-- 有些驱动程序在返回值为NULL时需要指定JDBC类型,大部分情况下是:NULL、VARCHAR或OTHER。默认值OTHER --> <setting name="jdbcTypeForNull" value="OTHER" /> <setting name="logImpl" value="LOG4J2" /> </settings> <typeAliases> <typeAlias alias="HashMap" type="java.util.HashMap" /> <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" /> <!-- 增加的 Class --> <!-- 每一个Bean对应一个别名 --> </typeAliases> <typeHandlers> <!-- BLOB 转 String 功能 --> <typeHandler javaType="String" jdbcType="BLOB" handler="com.depower.inter.database.ConvertBlobTypeHandler" /> </typeHandlers> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC" /> <!-- 可分为三种参数设定: . POOLED . UNPOOLED . JNDI --> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <property name="poolMaximumActiveConnections" value="100" /> <property name="poolMaximumCheckoutTime" value="20000" /> <property name="poolMaximumIdleConnections" value="4" /> <property name="poolTimeToWait" value="20000" /> <!-- 将开启ping机制。 --> <property name="poolPingEnabled" value="false" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mysql.stmt.xml" /> </mappers> </configuration> 如果是tdengine如何配置
最新发布
09-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值