Domain类中属性字段类型int与Integer

在创建hibernate映射类时,属性类型有些人用包装类,有些人用基本数据类型。

比如我就喜欢直接用boolean int long等原生基本数据类型。

不过因为java都可以自动拆箱,装箱,怎么用其实都是可以的。

用原生基本类型与包装类的区别最主要的可能就是默认值的不同。比如boolean 的默认值是false,Boolean等包装类的默认值都是null。

都看大家的编程习惯吧,但今天碰到一个报错,所以特意整理这个博文记录一下。

过程是这样的:

我在一个Domain类中有一个sort字段,我直接定义为int类型:

 

/**
	 * @return the sort
	 */
	public int getSort() {
		return sort;
	}

	/**
	 * @param sort the sort to set
	 */
	public void setSort(int sort) {
		this.sort = sort;
	}

 

然后session.get(obj.getClass(), id); 后报一个异常:

Caused by: org.springframework.orm.hibernate3.HibernateSystemException: Null value was assigned to a property of primitive type setter of com.infinitus.gbss.product.domain.ProductListTypeInfo.sort; nested exception is org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.infinitus.gbss.product.domain.ProductListTypeInfo.sort
	at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:690)
	at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:106)
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:403)
	at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58)
	at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)

 

经查原来是数据库表的sort字段不是必填的,这个时候是null值,hibernate在调用setSort(int sort)方法时候null值无法转换为int类型的,故报上述错误。

 

所以看来,用int 还是用Integer都看情况下,如果数据库字段是允许为空的,则Domain中的字段类型最好使用包装类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值