У меня есть эти Pojos:
public class ParticipantPojo implements Serializable
.....
@OneToMany(mappedBy = "participant", cascade = CascadeType.ALL)
private Set<ParticipantIdentificationNumberPojo> identificationNumbers;
и
public class ParticipantIdentificationNumberPojo implements Serializable
......
@ManyToOne
@JoinColumn(name = "PARTICIPANT", nullable = false)
private ParticipantPojo participant;
Когда я хочу создать нового участника с
ParticipantPojo pojo= new ParticipantPojo ();
...
Set<ParticipantIdentificationNumberPojo> identSet = new HashSet<ParticipantIdentificationNumberPojo>();
ParticipantIdentificationNumberPojo identInfo= new ParticipantIdentificationNumberPojo();
identInfo.setType("xyz");
identInfo.setNumber(12345);
identSet.add(identInfo);
pojo.setIdentificationNumbers(identSet);
и сохранить его
session.save(pojo);
я получаю следующую ошибку:
org.hibernate.PropertyValueException: not-null property references a null or transient value: de.seeburger.marktpartnerdaten.database.pojo.ParticipantIdentificationNumberPojo.participant
В блоге я нашел решение установить nullable = true в
@JoinColumn(name = "PARTICIPANT", nullable = false)
, но это не то, что яхочу (участник не должен быть нулевым!) ... установка nullable = true создать еще одно исключение
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: de.seeburger.marktpartnerdaten.database.pojo.ParticipantPojo
Я думаю, что проблема в том, что Hibernate не сохраняет участника и использует идентификатор для сохранения memberIdentificationNumber ...но я не нашел решения для моего исключения: - (