插入实体时,Hibernate OneToMany关系将外键设置为null

时间:2017-11-07 14:56:11

标签: java hibernate jpa persistence one-to-many

我有两个实体:人物和事件。这个想法是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注释来跟踪所有者我应该怎么做?

任何建议都表示赞赏。

1 个答案:

答案 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注释来跟踪所有者我应该怎么做?

在您的情况下,您不需要它,因为您有双向关系。只有当您从@OneToManyPerson之间存在单向Event关系时才有意义。