gpt4 book ai didi

java - 当依赖属性更改时如何在实体上设置 ModifiedDate

转载 作者:行者123 更新时间:2023-12-01 15:44:50 25 4
gpt4 key购买 nike

假设 JPA 实体 Foo。通过添加注释,我可以处理 createdDatemodifiedDate 属性的更新。更改 name 并保留 Foo 后,createdDate 已正确更新。但这对于 bars 不起作用,它是 Bar 实体列表

@Entity
class Foo {
...

String name;

@OneToMany(cascade = CascadeType.PERSIST)
List<Bar> bars;

Date modifiedDate;
Date createdDate;

@PrePersist
public void updateCreatedDate() {
dateCreated = new Date();
}

@PreUpdate
public void updateModifiedDate() {
lastModified = new Date();
}

...
}

@Entity
class Bar {
...
}

如果 bars 中的一项发生更改并保留,是否可以更新 Foo

最佳答案

您可以封装对柱形列表的每个修改,并在每次修改列表时将实体标记为脏(例如,通过将修改日期设置为另一个值):

public List<Bar> getBars() {
return Collections.unmodifiableList(this.bars);
}

public void addBar(Bar b) {
this.bars.add(b);
this.modifiedDate = new Date(0L);
}

...

请注意,这将生成更多查询,因为添加栏通常只需要在栏表中插入一次(如果使用连接表,则在连接表中插入一次)。现在,每个栏的添加也会导致 Foo 表中的更新。

关于java - 当依赖属性更改时如何在实体上设置 ModifiedDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com