你好,如何指定数据库事务隔离级别?

你好,如何指定数据库事务隔离级别?

//为enhance方法传入的拦截器称为Inject拦截器,下面代码中的Tx称为Inject拦截器
ReadyClueToDdpSalopportunitySerice service = Enhancer.enhance(ReadyClueToDdpSalopportunitySerice.class, Tx.class);

boolean bl=false;
try { 
bl=service.save(vrc);
} catch (Exception e) {
log.error("程序异常_e:"+ExceptionUtil.getTrace(e));
                         }

异常:Caused by: java.sql.SQLException: ORA-08177: can't serialize access for this transaction

评论区

JFinal

2017-05-17 17:24

activeRecordPlugin.setTransactionLevel(2) 即可

合金来了

2017-05-17 18:01

@JFinal 我们这个项目是非WEB的,定时服务

合金来了

2017-05-17 18:03

@JFinal arpOracle.setTransactionLevel(8); 找到了,直接改成2,就行了

合金来了

2017-05-17 18:06

@JFinal

arpOracle.setTransactionLevel(8);
你好,这个应该是全局事务级别吧?如果我想给某几个方法设置不同的事务级别,应该如果配置?

//oracle 数据源
C3p0Plugin dsOracle = new C3p0Plugin(p.get("oracleJdbcUrl"), p.get("oracleUser"), p.get("oraclePassword"));
dsOracle.setDriverClass(p.get("oracleDriverClassName"));
dsOracle.setInitialPoolSize(p.getInt("oracleInitialPoolSize"));
dsOracle.setMinPoolSize(p.getInt("oracleMinPoolSize"));
dsOracle.setMaxPoolSize(p.getInt("oracleMaxPoolSize"));
dsOracle.setMaxIdleTime(p.getInt("oracleMaxIdleTime"));
dsOracle.setAcquireIncrement(p.getInt("oracleAcquireIncrement"));

// oracle ActiveRecrodPlugin 实例,并指定configName为 oracle
ActiveRecordPlugin arpOracle = new ActiveRecordPlugin("oracle", dsOracle);
arpOracle.setDevMode(p.getBoolean("devMode"));
arpOracle.setShowSql(p.getBoolean("showSql"));
arpOracle.setDialect(new OracleDialect());
arpOracle.setTransactionLevel(8);
arpOracle.setContainerFactory(new CaseInsensitiveContainerFactory());//忽略大小写
com.cedarmg.ecs.fawbtddp.timerapidb.core.models.oracle._MappingKit.mapping(arpOracle);
dsOracle.start();
arpOracle.start();

JFinal

2017-05-17 20:38

给某个方法来设计不同级别的事务,有两种办法:
1:使用指令定事务级别的拦截器,例如:@Before(TxReadCommitted.class)、@Before(TxSerializable.class)

2:用 Db.tx(2, ...) 或者 Db.tx(8, ...) 来做事务,并传入参数直接指定事务级别

合金来了

2017-05-18 10:45

@JFinal 你好,非WEB程序也可以使用@Before(TxSerializable.class)注解吗?

JFinal

2017-05-18 11:14

@合金来了 当然可以,看一下手册中的业务层 AOP 的用法

热门反馈

扫码入社