拦截器Enhancer.enhance的事务对Oracle数据表不回滚?

你好,MYSQL可以回滚,ORACLE不回滚

//为enhance方法传入的拦截器称为Inject拦截器,下面代码中的Tx称为Inject拦截器

ReadyClueSerice service = Enhancer.enhance(ReadyClueSerice.class, Tx.class);

service.save(vrc);

评论区

JFinal

2016-10-18 11:10

在 Tx.java 中的 intercept 方法中设置一个断点,单步调试一下程序是否走到了 conn.commit() 这行代码,这行是提交动作

合金来了

2016-10-18 11:55

你好,断点调试结果:


public void intercept(Invocation inv) {
Config config = getConfigWithTxConfig(inv);
if (config == null)
config = DbKit.getConfig();


操作Oracle数据库时“config”加载的是mysql,估计是这个原因导致的oracle事务失效

合金来了

2016-10-18 15:31

/**
* TxConfig is used to configure configName for Tx interceptor
*/
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface TxConfig {
String value(); // configName of Config
}


加了类注解后事务好似了,谢谢

@TxConfig("oracle")
public class ReadyClueSerice {

热门反馈

扫码入社