Я использую Spring boot 2.0.1, у меня есть следующие объекты:
@Entity
public class Session {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@ManyToOne
private Groupe groupe;
...
и
@Entity
public class Groupe {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
@OneToMany(mappedBy="groupe")
private List<Session> sessions;
...
Мне интересно, почему, если я сохраняю Группу до сессии, она работает, но не если я делаю наоборот, вот пример:
Рабочий кейс:
Groupe groupe1= new Groupe("groupe1",professor);
Session session1 = new Session(new Date(),false,groupe1);
Session session2 = new Session(new Date(),true,groupe1);
groupeRepository.save(groupe1); // <-----
sessionRepository.save(session1);
sessionRepository.save(session2);
Не рабочий случай:
Groupe groupe1= new Groupe("groupe1",professor);
Session session1 = new Session(new Date(),false,groupe1);
Session session2 = new Session(new Date(),true,groupe1);
sessionRepository.save(session1);
sessionRepository.save(session2);
groupeRepository.save(groupe1); // <-----
Это дает мне следующее исключение:
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : gestionAbs.bean.Session.groupe -> gestionAbs.bean.Groupe
Я ожидал обратного, поскольку отношение сопоставляется сессией, сессия является "владельцем" связи, сохраняющаяся сессия должна сохраняться, но, похоже, я ошибаюсь, кто-нибудь может объяснить мне, почему, пожалуйста?
Спасибо