76
|
Peter · 技术社区 · 15 年前 |
![]() |
1
126
根据这个
SO thread
解决方案是使用非基元包装器类型;例如,
|
![]() |
2
40
不能将空值赋给基元类型,如int、long、boolean等。如果与对象中字段对应的数据库列可以为空,则字段应为包装类,如integer、long、boolean等。 危险在于,如果数据库中没有空值,代码将正常运行,但是一旦插入空值,代码将失败。 并且您总是可以从getter返回基本类型。前任:
但在大多数情况下,您将希望返回包装类。 因此,要么将db列设置为不允许空值,要么使用包装类。 |
![]() |
3
11
基元类型不能为空。因此,解决方案是用tablename.java文件中的Primitive Wrapper类替换Primitive类型。 例如:
参考 http://en.wikipedia.org/wiki/Primitive_wrapper_class 以查找Primivite类型的包装类。 |
![]() |
4
5
使用整数作为类型,并相应地提供setter/getter。
|
![]() |
5
5
我会用一个例子来帮助你理解。假设您有一个关系表(student),它有两列、id(int)和name(string)。现在,作为ORM,您可以将实体类设置为如下所示:
假设表已经有条目。现在,如果有人要求你再加一列“年龄”(int)
必须将默认值设置为空才能在预填充的表中添加另一列。这使您可以在类中添加另一个字段。现在问题出现了,您是要使用基元数据类型还是非基元包装器数据类型来声明字段。
或
您必须将字段声明为非基元包装器数据类型,因为容器将尝试用实体映射表。因此,如果不将字段声明为包装器&最终将引发“为基元类型setter的属性分配了空值”异常,则它将无法映射空值(默认)。 |
![]() |
6
2
@dinh nhat,您的setter方法看起来错误,因为您再次将基元类型放在那里,它应该是:
|
![]() |
7
2
要么完全避免
基元不是对象,因此无法分配
|
![]() |
8
2
将参数类型从基元更改为对象,并在setter中进行空检查。见下面的例子
|
![]() |
9
1
确保你的数据库 我的属性 字段包含空而不是零。 |
![]() |
10
1
有两条路
|
![]() |
11
0
不要在您的 实体类 使用各自的包装纸。这样可以解决这个问题。 在实体类之外,您可以使用!=对其余代码流进行空验证。 |