2016-04-28 4 views
0

トランザクションのロールバックが機能しません(Spring 3.1)。 hereのような設定XMLファイルを編集しようとしましたが、結果はありません。 は、ここに私のxmlファイル:Spring @ Transaction transactionsing xml

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns="http://www.springframework.org/schema/beans" 
     xmlns:jee="http://www.springframework.org/schema/jee" 
     xmlns:aop= "http://www.springframework.org/schema/aop" 
     xmlns:tx= "http://www.springframework.org/schema/tx" 
     xmlns:jpa="http://www.springframework.org/schema/data/jpa" 
     xsi:schemaLocation=" 
       http://www.springframework.org/schema/mvc 
       http://www.springframework.org/schema/mvc/spring-mvc.xsd 
       http://www.springframework.org/schema/jee 
       http://www.springframework.org/schema/jee/spring-jee-3.1.xsd 
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd 
       http://www.springframework.org/schema/aop 
       http://www.springframework.org/schema/aop/spring-aop-2.0.xsd 
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-2.0.xsd 
       http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd 
       "> 

     <jee:jndi-lookup id="dataSourceUsrAppe1" jndi-name="jdbc/ZhabDS"/> 

     <bean id="utentiDAO" class="it.dao.UtentiDAO"> 
      <property name="dataSourceUsrAppe1"> 
       <ref bean="dataSourceUsrAppe1"/> 
      </property> 
     </bean> 
<!-- doesn't work with this: 
     <tx:annotation-driven transaction-manager="txManager"/> 
      <property name="dataSourceUsrAppe1"> 
       <ref bean="dataSourceUsrAppe1"/> 
      </property> 
     </bean> 
    </beans> 
--> 
</beans> 

は、私がここにトランザクションマネージャを追加すべきか?

は、ここに私のサービスです:

例外がスローされ、正しく
@Service 
public class UtentiService { 
    @Autowired 
    private UtentiDAO utentiDAO; 

    @Transactional(rollbackFor={Exception.class}, propagation=Propagation.REQUIRED) 
    public boolean createUser(Zhabuten user) throws Exception 
    { 
      long idPrincipale; 
      idPrincipale = utentiDAO.insert(user, utentiDAO.query1); 
      idPrincipale = utentiDAO.insert(user, utentiDAO.query2); 

      if (idPrincipale!=0) throw new java.lang.Exception(); 

      idPrincipale = utentiDAO.insert(user, utentiDAO.query3); 
     return false; 
    } 
} 

、それはコントローラからcatchedだとデータベースがロールバックされていません。 xmlに設定がありませんか?

+1

トランザクションマネージャはどこから来ますか? –

+0

ログを確認しましたか?トランザクションは開始しコミットしていますか? –

+0

私はそれを設定する方法を理解していませんでした。私はこれを削除する必要がありますか? <プロパティ名= "dataSourceUsrAppe1"> た Accollativo

答えて

2

次のxml構成を使用してください。

<!-- Enable Annotation based Declarative Transaction Management --> 
<tx:annotation-driven proxy-target-class="true" 
    transaction-manager="transactionManager" /> 

<!-- Creating TransactionManager Bean, since JDBC we are creating of type 
    DataSourceTransactionManager --> 
<bean id="transactionManager" 
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="dataSourceUsrAppe1" /> 
</bean> 
+0

ありがとう、これは動作します! 不思議なことに、私はちょうどデバッグモードでEclipseから新しい不思議なポップアップエラーを受け取りました(あまりにも古いブレークポイントをすべて消去したあと):ブレークポイントをインストールできませんでしたit.service.UtentiService $$ ... CGLIB ... $$ someHEXnumber due行コンパイラの属性が欠落しています。コンパイラー・オプションを変更して、行番号属性を生成します。 理由:行番号情報がありません。 – Accollativo

関連する問題