Нулевое значение в поле Int - PullRequest
0 голосов
/ 31 марта 2020

У меня есть класс сущностей с полем int, в таблице тип cloumn - Number (10,0). В таблице по умолчанию установлено значение «NULL». Используя данные JPA Spring, когда я пытаюсь выбрать запрос, используя jpa, я получаю ошибки ниже.

java.lang.IllegalArgumentException: Can not set int field com.test.app.entity.TestProject.baseUserIdNumber to null value

Я не могу ничего изменить в таблице, так как это уже создано и используется в производстве. Все, что я могу сделать с классом Entity или 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()


}

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Вы можете просто определить поле со значением по умолчанию и определить его как int вместо Integer, чтобы оно не принимало значения NULL.

@Column(name = "my_column")
private int myField = 0;
0 голосов
/ 31 марта 2020

Есть что-то странное в том, что вы описали.

  • есть таблица
  • , в которой есть столбец с типом данных number(10, 0)
  • его значение по умолчанию null
    • хорошо, да - если он не указан, это действительно null
  • код, который вы выполнили, возвращает

    Невозможно установить (...) нулевое значение

Это просто не имеет смысла. Если его значение по умолчанию null, почему вы не можете установить его на 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

Поскольку вы ничего не можете сделать с таблицей (как она используется в рабочей среде), все, что вы можете сделать, это , а не , пытаясь установить его на null (независимо от того, какой инструмент или язык вы используете) .

...