1
将spring与jooq集成时,事务性声明回滚函数不起作用。我的应用程序的context.xml设置低于交易不起作用的spring-jooq
<bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<qualifier value="tx-jooqtest"/>
<property name="dataSource" value="#{jooqtest.getDataSource()}"/>
</bean>
<bean id="jooqtest" class="com.vassarlabs.datasource.service.impl.VLDataSource">
<property name="dataStoreName" value="jooqtest" />
</bean>
再经过我已标记的事务性的方法如下面
@Transactional(value = "tx-jooqtest" , rollbackFor = DataAccessException.class)
public void testTransaction() {
DSLContext dslContext = null;
dslContext = DSL.using(dtSource.getDataSource(), SQLDialect.MYSQL);
String sql = "insert into food (kind) values (?)";
dslContext.execute(sql ,new Object[]{"Its a whole next level kind "});
insert2();}
和insert2()方法,我扔DataAccessExcpetion,但交易没有回滚。是否有任何其他属性,我必须在应用程序环境xml中设置使其工作。
为了记录在案,这个问题也被要求在[jOOQ手册(HTTPS://www.jooq。 org/doc/latest/manual/sql-execution/transaction-management /#comment-3271116066) –
我想为了让别人能够回答这个问题(无论堆栈溢出还是jOOQ手册),您都需要为'insert2()','VLDataSource'添加代码。我仍然认为你的问题存在于'VLDataSource'内部,但是很难告诉你迄今为止给出的信息。 –
似乎它缺少一些配置。使用(dataSource,dialect)代替DSL。我必须在application-context.xml中使用DSL.using(connProvider,dialect)和下面的属性。 **'<豆ID = “transactionAwareDataSource” 类= “org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy”> <构造精氨酸值= “#{jooqtest.getDataSource()}”/> ** –