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()}」/> ** –