Int 字段的空值
Null value to an Int field
我有一个实体 class,它有一个 int 字段,在 table 中,列类型是 Number (10,0)。在table中默认值为"NULL"。使用 Spring 数据 JPA 当我尝试 select 使用 jpa 进行查询时,出现以下错误。
java.lang.IllegalArgumentException: Can not set int field com.test.app.entity.TestProject.baseUserIdNumber to null value
我无法更改 table 中的任何内容,因为它已经创建并在生产中使用。我可以用 Entity class 或 JPQL
做的任何事情
@Entity
public class TestProject {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int projectId;
private String description;
private String name;
private int seqNumber
private LocalDate startDateTime;
private LocalDate endDateTime;
@Column(name = "baseUserIdNumber")
private int myfield;
private String projStatus;
constructors ()
getters()
Setters()
}
您可以只使用默认值定义字段并将其定义为 int 而不是 Integer,这样它就不会接受 NULL 值。
@Column(name = "my_column")
private int myField = 0;
你的描述有些奇怪。
- 有个table
- 它有一个数据类型为
number(10, 0)
的列
- 其默认值为
null
- 嗯,是的 - 如果没有指定,它确实是
null
您执行的代码 returns
Can not set (...) to null value
这没有意义。如果它的默认值是null
,为什么不能设置成null
呢? table 不是设置为 not null 吗?
这是 Oracle 代码,但错误消息与您得到的类似:
SQL> create table test (id number(10, 0) not null, name varchar2(20));
Table created.
SQL> insert into test
2 select 1, 'Little' from dual union all
3 select 2, 'Foot' from dual;
2 rows created.
SQL> update test set id = null where id = 1;
update test set id = null where id = 1
*
ERROR at line 1:
ORA-01407: cannot update ("SCOTT"."TEST"."ID") to NULL
因为你不能用 table 做任何事情(因为它在生产中使用),你所能做的就是 而不是 试图将它设置为 null
(无论您使用哪种工具或语言)。
我有一个实体 class,它有一个 int 字段,在 table 中,列类型是 Number (10,0)。在table中默认值为"NULL"。使用 Spring 数据 JPA 当我尝试 select 使用 jpa 进行查询时,出现以下错误。
java.lang.IllegalArgumentException: Can not set int field com.test.app.entity.TestProject.baseUserIdNumber to null value
我无法更改 table 中的任何内容,因为它已经创建并在生产中使用。我可以用 Entity class 或 JPQL
做的任何事情@Entity
public class TestProject {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int projectId;
private String description;
private String name;
private int seqNumber
private LocalDate startDateTime;
private LocalDate endDateTime;
@Column(name = "baseUserIdNumber")
private int myfield;
private String projStatus;
constructors ()
getters()
Setters()
}
您可以只使用默认值定义字段并将其定义为 int 而不是 Integer,这样它就不会接受 NULL 值。
@Column(name = "my_column")
private int myField = 0;
你的描述有些奇怪。
- 有个table
- 它有一个数据类型为
number(10, 0)
的列
- 其默认值为
null
- 嗯,是的 - 如果没有指定,它确实是
null
- 嗯,是的 - 如果没有指定,它确实是
您执行的代码 returns
Can not set (...) to null value
这没有意义。如果它的默认值是null
,为什么不能设置成null
呢? table 不是设置为 not null 吗?
这是 Oracle 代码,但错误消息与您得到的类似:
SQL> create table test (id number(10, 0) not null, name varchar2(20));
Table created.
SQL> insert into test
2 select 1, 'Little' from dual union all
3 select 2, 'Foot' from dual;
2 rows created.
SQL> update test set id = null where id = 1;
update test set id = null where id = 1
*
ERROR at line 1:
ORA-01407: cannot update ("SCOTT"."TEST"."ID") to NULL
因为你不能用 table 做任何事情(因为它在生产中使用),你所能做的就是 而不是 试图将它设置为 null
(无论您使用哪种工具或语言)。