У меня есть Персона таблица с полем страна в нем ( FK, может быть нулевой ). Когда я пытаюсь сохранить Персона с пустым значением страна , я получаю сообщение об ошибке 500 и сообщение
2020-01-30 15 : 16: 37.277 WARN 10524 --- [nio-8098-exe c -1] ohengine.jdb c .spi.SqlExceptionHelper: SQL Ошибка: 0, SQLState: 23502 2020-01-30 15:16 : 37.277 ОШИБКА 10524 --- [nio-8098-exe c -1] ohengine.jdb c .spi.SqlExceptionHelper: ОШИБКА: нулевое значение в столбце "code" нарушает ограничение NOT NULL Подробности: ошибочная строка содержит (42 , ноль, ноль, ноль). 2020-01-30 15: 16: 37.299 ОШИБКА 10524 --- [nio-8098-exe c -1] ozproblem.spring.common.AdviceTraits: внутренняя ошибка сервера
org.springframework.dao. DataIntegrityViolationException: не удалось выполнить инструкцию; SQL [н / п]; ограничение [ноль]; вложенное исключение: org.hibernate.exception.ConstraintViolationException: не удалось выполнить инструкцию
Грубая обработка ошибок:
Ошибка: нулевое значение в столбце «код» разрывается NOT NULL ограничение Подробности: строка ошибки содержит (42, ноль, ноль, ноль).
Person.java
@Entity
@Table(name = "t_person")
@Data
public class Person {
@Id
@Column(name = "person_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String surname;
private String name;
private String patronymic;
@Column(name = "surname_rus")
private String surnameRus;
@Column(name = "name_rus")
private String nameRus;
@Column(name = "surname_eng")
private String surnameEng;
@Column(name = "name_eng")
private String nameEng;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "country_id")
private Country country;
private String settlement;
private String occupation;
@ManyToMany
@JoinTable(
name = "person_link",
joinColumns = @JoinColumn(name = "person_id", referencedColumnName = "person_id"),
inverseJoinColumns = @JoinColumn(name = "link_id", referencedColumnName = "link_id"))
private List<UrlLink> linkList;
@ManyToMany
@JoinTable(
name = "org_actor",
joinColumns = @JoinColumn(name = "actor_id", referencedColumnName = "person_id"),
inverseJoinColumns = @JoinColumn(name = "org_id", referencedColumnName = "org_id"))
private List<Org> orgList;
private String description;
@ManyToMany
@JoinTable(
name = "person_hashtag",
joinColumns = @JoinColumn(name = "person_id", referencedColumnName = "person_id"),
inverseJoinColumns = @JoinColumn(name = "hashtag_id", referencedColumnName = "hashtag_id"))
private List<HashTag> hashtagList;
************
Country.java
@Entity
@Table(name="t_country")
@Data
public class Country {
@Id
@Column(name = "country_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String code;
private String name;
}
create table t_country
(
country_id serial not null
constraint t_country_pkey
primary key,
code char(3) not null
constraint unique_constr_code
unique,
name text
constraint unique_constr_name
unique,
miscellany text,
constraint constr_name
unique (code, name)
);
Как сохранить сущность Person с пустой страной?