我正在使用两个数据库(MySQL 和 HSQL),所以我的 Spring 应用程序中需要两个事务管理器。请看一下这段代码:
public abstract class ClientService implements IClientService{
public void doSomething(){
}
}
public interface IClientService{
void doSomething();
}
@Transactional("txManagerHSQL")
public class ClientServiceHSQL extends ClientService{
}
@Transactional("txManagerMySQL")
public class ClientServiceMySQL extends ClientService{
}
我想要ClientServiceHSQL
并在不同的数据库ClientServiceMySQL
上执行doSomething()
,但我遇到了"org.hibernate.HibernateException: No Session found for current thread"
例外。似乎@Transactional
注释不会影响继承的方法。此时我必须doSomething()
在每个@Transactional
类中实现才能doSomething()
成功调用,但对我来说这并不好。有没有办法使继承的方法也具有事务性?