gpt4 book ai didi

java - 使用@Transactional 的类层次结构问题

转载 作者:搜寻专家 更新时间:2023-11-01 03:12:49 27 4
gpt4 key购买 nike

项目设置:Spring 3.0.5/JPA 2/Hibernate/@Transactional

我们使用多个不同的数据源(因此也使用不同的事务管理器),但有共同的服务基类,因为很多功能都被重用了。

所以我们认为我们可以使用 Custom Annotations 来解决这个问题.我们在抽象基类中定义所有方法,并为每个事务管理器创建一个空的实现类。

现在的问题是:

AbstractFallbackTransactionAttributeSource ,这是正在进行的查找:

TransactionAttribute txAtt = findTransactionAttribute(specificMethod);
// ...
// Second try is the transaction attribute on the target class.
txAtt = findTransactionAttribute(specificMethod.getDeclaringClass());

首先检查方法,然后检查声明该方法(及其祖先)的类。但在我们的上下文中,自定义注解驻留在子类中,无法通过向上查找找到。

那么我们该如何解决这个问题呢?

[我也问过这个问题in the Spring Community Forum ]

最佳答案

伟大的收获。我不知道一个好的解决方案,但作为一种解决方法,您可以像这样在实现中覆盖有问题的方法:

@Override
void method(...)
// Just to work around a bug in AbstractFallbackTransactionAttributeSource
super.method(...);
}

这将使 @Transactional 可见,但它很丑 :-/

关于java - 使用@Transactional 的类层次结构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032315/

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