gpt4 book ai didi

java - Propagation.REQUIRES_NEW 会对我的应用造成什么附带影响

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

我遇到这样的错误

a different object with the same identifier value was already associated with the session:

我已经搜索并发现它可以通过 CascadeType.MERGE 或重构大量代码来修复,以防止同一个数据库对象成为 session 中的两个实例。

我无法重构它。

CascadeType.MERGE 有效,但这意味着我必须编写大量代码才能解决删除问题,因为它之前是 .ALL,对吗?

我成功了

@Transactional(propagation = Propagation.REQUIRES_NEW)

在一个方法之上,一个类的方法,用 @Service 注释,查询数据库,这是抛出我提到的异常的那个。

我需要帮助来了解这个新的注释方法是否会像现在这样给我带来 future 的头痛。

除了我正在修复的操作之外,它还被一些 cron 作业调用。

最佳答案

实际上,您通过使用 @Transactional(propagation = Propagation.REQUIRES_NEW) 注释方法来为方法调用创建一个单独的事务

这意味着在方法抛出异常的情况下,所有数据库更改(保存等)都将应用并且不会回滚。这可能会严重破坏业务逻辑,并可能成为数据库中数据不一致的来源。

我会重新考虑应用 Propagation.REQUIRES_NEW

Merge 在这种情况下听起来更合适。

关于java - Propagation.REQUIRES_NEW 会对我的应用造成什么附带影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44675457/

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