我有两个实体:人物和事件。这个想法是Person是几个事件的所有者,一个事件只能由一个人拥有。
Person实体的片段:
@OneToMany(fetch = FetchType.EAGER,cascade=CascadeType.ALL,mappedBy="person")
@JsonIgnore
private List<Event> event;
Event实体的片段:
@ManyToOne(fetch=FetchType.EAGER, cascade={CascadeType.PERSIST, CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH})
@JsonIgnore
private Person person;
当我尝试插入Person并在数据库中添加一些事件后,Event表中的外键始终为null。这意味着我无法跟踪&#34;所有者&#34;事件(这是我的目标)。
此外,如果我想使用@JoinTable注释来跟踪所有者我应该怎么做?
任何建议都表示赞赏。
答案 0 :(得分:0)
可能您没有正确连接实体。以下pseodo代码将向您展示如何连接实体:
Person person = new Person();
Event event1 = new Event();
Event event2 = new Event();
person.getEvents().add(event1);
person.getEvents().add(event2);
event1.setPerson(person);
event2.setPerson(person);
// Start transaction here
entityManager.persist(person); // this should save also events because of cascade attribute
// commit transaction
此外,如果我想使用@JoinTable注释来跟踪所有者我应该怎么做?
在您的情况下,您不需要它,因为您有双向关系。只有当您从@OneToMany
到Person
之间存在单向Event
关系时才有意义。