Я использую интеграцию hibernate с весенней загрузкой. Я делаю сопоставление один к одному. Но я получаю ошибку при сохранении данных. Запрос выполняется правильно, но значение внешнего ключа во внешней таблице не передается из основной таблицы. Ниже приведено описание два класса, которые я использую.
@Entity
@Table(name="PERSON")
public class PersonEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "person_generator")
@SequenceGenerator(name="person_generator", sequenceName = "PERSON_SEQ",allocationSize=1)
private Long p_id;
@Column(name="p_name")
private String pName;
@OneToOne(cascade = {CascadeType.ALL},mappedBy="person")
private PassportEntity passport;
public PassportEntity getPassport() {
return passport;
}
public void setPassport(PassportEntity passport) {
this.passport = passport;
}
public Long getP_id() {
return p_id;
}
public void setP_id(Long p_id) {
this.p_id = p_id;
}
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
}
@Entity
@Table(name="PASSPORT")
public class PassportEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "passport_generator")
@SequenceGenerator(name="passport_generator", sequenceName = "PASSPORT_SEQ",allocationSize=1)
private Long passport_No;
@Column(name="country")
private String country;
@OneToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "p_id")
private PersonEntity person;
public Long getPassport_No() {
return passport_No;
}
public void setPassport_No(Long passport_No) {
this.passport_No = passport_No;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
Я получаю ниже запроса об ошибке, но значение p_id не передается из таблицы персонажа в столбец p_id таблицы паспортов.
Hibernate: выберите person_seq.nextval из двойной Hibernate: выберите passport_seq.nextval из dual Hibernate: вставьте в значения person (p_name, p_id) (?,?) 2020-03-06 22:45:07 - параметр привязки [1] как [VARCHAR] - [Аджай Кумар] 2020-03-06 22:45:07 - параметр привязки [2] как [BIGINT] - [11] Hibernate: вставить в паспорт (страна, p_id, passport_no) значения (?,?,?) 2020 -03-06 22:45:07 - параметр привязки [1] как [VARCHAR] - [Индия] 2020-03-06 22:45:07 - параметр привязки [2] как [BIGINT] - [ноль] 2020-03 -06 22:45:07 - параметр привязки [3] как [BIGINT] - [27] 2020-03-06 22:45:07 - SQL Ошибка: 1400, SQLState: 23000 2020-03-06 22:45:07 - ORA-01400: невозможно вставить NULL в ("DTV". "PASSPORT". "P_ID")
Может кто-нибудь помочь мне, в чем может быть проблема.