gpt4 book ai didi

java - 通过在 JPA 中设置状态来删除数据库中的条目

转载 作者:行者123 更新时间:2023-11-29 05:28:13 24 4
gpt4 key购买 nike

我的团队决定不从数据库中删除条目,而是赋予它们类似ACTIVEDELETED 的状态。

问题出现时,对于实体 - 我们称它为 Customer 我收集了另一个实体:

@Entity
public class Customer {
@ManyToMany
private List<Order> orders;

private MyEnumStatus status;

...
}

如果我想从 orders 列表中“删除”一个订单,我不会影响它是如何完成的(特别是 - 它肯定不会在链接表中的条目上设置所需的状态,而是它只会从中删除一条记录。

@PersistenceContext 
EntityManager em;

...

Customer customer = customerService.getRandomOne();
customer.getOrders().remove(0);
em.merge(customer);

我的问题是 - 是否可以将状态字段(在订单实体中)应用于此场景?我的意思是以某种方式覆盖此行为以设置状态而不是删除条目。

最佳答案

是的。

您可以使用事件或拦截器。两者均在 chapter 14 of the reference docs 中进行了描述.这个选项很强大但是很麻烦。使用它需要您自担风险。

软删除可能是更好的选择。 @mdatwood 的链接显示了一种执行此操作的方法。有一个更完整的例子 at feraturenotbug .不要忘记调整所有查询以仅返回未删除的对象。示例中提到了这一点。

关于java - 通过在 JPA 中设置状态来删除数据库中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21976186/

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