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(无论您使用哪种工具或语言)。