`
xigua366
  • 浏览: 102452 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

    delphi通用函数单元一

    {* 取得与文件相关的图标,成功则返回True} function CreateBakFile(FileName, Ext: string): Boolean; {测试通过} {* 创建备份文件} function Deltree(Dir: string): Boolean; {测试通过} {* 删除整个目录} ...

    2021-2022计算机二级等级考试试题及答案No.3628.docx

    3. `Integer.parseInt()`方法将字符串转换为整数类型,返回的是一个int类型的值,而`Integer.valueOf()`方法会返回一个Integer对象,调用其`intValue()`方法同样得到int类型的值。因此,选项D是正确的。 4. `Date`...

    Java操作Elasticsearch

    这些类通常包含注解,如`@Document`表示这是一个索引的文档类,`@Field`用于指定字段及其映射。例如: ```java @Document(indexName = "my_index") public class MyDocument { @Id private String id; @Field...

    2021-2022计算机二级等级考试试题及答案No.15555.docx

    15. 构造函数A(int aa, int bb)中,x(4,5)后,x.a为4,x.b为20。 16. Mod运算符的优先级最低。 17. 标识符可以由字母、汉字或下划线开头,后面可以跟随这些字符。 18. 枚举类型weekday中,ee对应的整数值是5,...

    2021-2022计算机二级等级考试试题及答案No.18839.docx

    23. **Java 类型转换**:`Integer.parseInt()`和`Integer.valueOf().intValue()`都是将字符串转换为整数类型变量,结果相同。 24. **数学表达式与逻辑运算符**:`3≤X`在编程中表示3小于等于X,可以转化为`X >= 3`...

    2021-2022计算机二级等级考试试题及答案No.10483.docx

    题目询问在Boolean、Integer、Byte和Single几种数据类型中哪种占用内存最大。一般来说,Single(单精度浮点数)类型占用的内存空间最多。 ### 15. 数据库系统的特性 题目考察了数据库系统的特征。数据库系统能够...

    java面试宝典

    8、int 和Integer 有什么区别? 9 9、&和&&的区别? 9 10、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别? 9 11、heap 和stack 有什么区别? 9 12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 9 13、...

    2021-2022计算机二级等级考试试题及答案No.1903.docx

    - **解析**: 在大多数编程语言中,`Boolean`类型通常占用1位,`Byte`类型占用1字节(8位),`Integer`类型占用2到4字节,`Single`类型(浮点数)通常占用4字节。因此,占用内存最小的是**B**(`Byte`)。 #### 6. ...

    java的JDBC使用Mybatis框架封装

    在UserMapper.xml文件中配置SQL语句,与UserMapper接口中的方法相对应。 ### 四、动态SQL MyBatis支持动态SQL,可以在映射文件中使用`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签来构建复杂的SQL语句。例如...

    2021-2022计算机二级等级考试试题及答案No.18327.docx

    根据提供的文件信息,我们可以总结出一系列与计算机二级等级考试相关的知识点。这些知识点涵盖了程序设计基础、HTML基础、数据库基础知识、操作系统基本概念等多个方面。 ### 1. 数组定义语法 - **错误示例**:...

    spring+springmvc+mybatis

    - `keyColumn`用于指定实体类属性名称。 ```xml <!-- 根据id查询 --> <select id="findById" resultType="com.itheima.domain.User" parameterType="int"> select * from user where id = #{uid} <!-- ...

    最新Java面试宝典pdf版

    14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域public,private,protected,以及不写时的区别 13 18、Overload和...

    Java面试宝典-经典

    14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域public,private,protected,以及不写时的区别 13 18、Overload和...

    java面试宝典2012

    14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 14 16、下面的代码有什么不妥之处? 14 17、请说出作用域public,private,protected,以及不写时的区别 14 18、Overload和...

    Java面试宝典2012版

    14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域public,private,protected,以及不写时的区别 13 18、Overload...

    传说中的SQL基本操作大全 整理

    - 这条语句创建了一个名为`employees`的新表,并定义了三个字段:`id`(整型主键),`name`(字符串类型)和`salary`(十进制类型)。 2. **删除表(DROP TABLE)** - `DROP TABLE`用于删除一个已存在的表。例如: ```...

Global site tag (gtag.js) - Google Analytics