JPA 实体 Batch
与 Event
具有 OneToMany
关系:
@OneToMany(mappedBy = "owningBatch")
private Set<Event> containingEvents;
和Event
与Batch
有ManyToOne关系:
@ManyToOne
@JoinColumn(name = "BATCH_ID")
private Batch owningBatch;
创建新实例并将其保留后,containingEvents
仍为 NULL
。
但是当我使用空 Set
时:
@OneToMany(mappedBy = "owningBatch")
private Set<Event> containingEvents = Sets.newHashSet();
然后在持久化之后,containingEvents
被替换为 Hibernate 的 PersistentSet
。
我希望即使在第一种情况下也会发生这种替换。为什么没有发生?
DAO 由 Spring Data JPA 实现。
Spring Boot 2.0.4.RELEASE
Spring Data JPA 2.0.4.RELEASE
Hibernate 5.2.17.Final
Hibernate JPA 2.1 1.0.2.Final
最佳答案
您需要在@OneToMany
注释中添加CascadeType
,例如:
@OneToMany(mappedBy = "owningBatch", cascade = CascadeType.ALL)
private Set<Event> containingEvents;
并且您的 Event
类必须包含:
@ManyToOne
@JoinColumn(name = "batch_id", referencedColumnName = "id")
private Batch owningBatch;
关于java - Hibernate集合在持久化后为NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52394530/