为什么jpa中的持久性顺序很重要?

时间:2018-05-05 21:02:41

标签: hibernate spring-boot spring-data-jpa

我正在使用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;
    ...

我想知道为什么如果我在Session之前坚持Group工作,但如果我做相反的事情则不会,这是一个例子: 工作案例:

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 

我期待相反,因为关系是由Session映射的,Session是关系的“所有者”,持久会话应该坚持下去,但似乎我错了,任何人都可以向我解释为什么请?

谢谢

0 个答案:

没有答案