Почему постоянный порядок в jpa имеет значение? - PullRequest
0 голосов
/ 06 мая 2018

Я использую 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 

Я ожидал обратного, поскольку отношение сопоставляется сессией, сессия является "владельцем" связи, сохраняющаяся сессия должна сохраняться, но, похоже, я ошибаюсь, кто-нибудь может объяснить мне, почему, пожалуйста?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...