与
spring-data-jpa 2.0.8.RELEASE
@OneToMany
相关实体对。比如说
King
&
Peasant
. 我想有一个逻辑,当一个农民被更新时,这也会更新国王
@LastModifiedDate
手动设置值。我做这种事;
@PreUpdate
@PreRemove
@PrePersist
void updateParents() {
Date now = new Date();
BaseEntity container = getParent();
while (Objects.nonNull(container)) {
container.setUpdateDateTime(now);
container = container.getParent();
}
}
这很好,这意味着它确实更新了所有的父级到国王(表结构非常混乱,从国王到最底层的农奴有5个深度),问题是,对父级的修改根本没有持久化。我有如下服务:;
@Transactional
public void update(String kingId, String peasantSeqNo) {
Peasant peasant = peasantRepository.getPeasant(kingId, peasantSeqNo);
peasant.setNobility(false);
peasantRepository.save(peasant);
}
@PreUpdate
注释
updateParents()
方法,并更新king的更新时间戳,仍然在事务结束后,此更改不会持久化。我可以用一个显式的
kingRepository.flush()
王农之间的联系是这样的;
@JsonManagedReference
@OneToMany(mappedBy = "parent", cascade = REMOVE)
private List<Peasant> peasantry;
和
@JsonBackReference
@MapsId("kingId")
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "ID_KING", referencedColumnName = "ID_KING", nullable = false)
private King parent;
这在某种程度上是我使用JPA的一个问题,但是找不到确切的原因和解决方案,你能给我一些建议吗?