У меня есть отношение 1: n в базе данных и объекты java, которые представляют отношение с hibernate.
Первичный ключ родительской таблицы генерируется с последовательностью базы данных,
дочерний объект использует первичный ключ родительского объекта в качестве внешнего ключа.
Я создаю новый родительский объект, включая набор новых дочерних объектов.
Затем я пытаюсь сохранить все объекты с один единственный
session.save(contract);
Хранение родительского объекта работает без проблем, но как только я добавляю дочерние объекты, я получаю исключение
... свойство not-null ссылается на нулевое или временное значение ...
из-за отсутствия FK в дочернем объекте.
Существует ли сопоставление, которое указывает hibernate использовать вновь сгенерированный PK родительского объекта в качестве FK в дочерних объектах, или мне нужно отдельно сохранять персистентные объекты с установленным вручную FK?
отображение родительского объекта:
...
@Id
@Column(name="ID", unique=true, nullable=false, precision=22, scale=0)
@SequenceGenerator(name="sequence_seq", sequenceName="SEQ_CONTRACT")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequence_seq")
public long getId() {
return this.id;
}
...
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="contract")
public Set<ContractSearchtags> getContractSearchtagses() {
return this.contractSearchtagses;
}
...
отображение дочернего объекта
...
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="CONTRACT_ID", nullable=false)
public Contract getContract() {
return this.contract;
}
...