2017-05-19 76 views
0

我正在使用guice 4.1以及持續擴展,並希望@Transactional可以工作,但事實並非如此。我跟着wiki和閱讀這篇文章,但都無濟於事:guice - @Transactional - 不工作

Managing transactions in JavaSE with Hibernate and Guice

只是再次重申......我做的:

  1. 取決於使用吉斯 - 堅持
  2. 谷歌的@Transactional註釋
  3. 僅在由guice管理的公共或受保護方法上使用註釋
  4. 啓動PersistService ...
+0

試圖解決方案,但最終明確管理它。)entityManager.getTransaction()開始(; entityManager.persist(entity); entityManager.getTransaction()。commit(); – Justas

回答

0

在我們當前的Sprint中升級我們的庫時遇到了類似的情況。我們所有失敗的單元測試都與我們正在注入的類相關,但未綁定到模塊中。

(這不是使用Guice 4.0的問題)。

我們傾向於只綁定我們的類,如果我們綁定到一個接口或一些特殊的要求。所以如果我們有一個簡單的類,它有一個零參數構造函數或者用@Inject註解,我們不會將它綁定到模塊中。

public class AA { 

    public AA() { 

    } 

    @Transactional 
    public void test() { 
     System.out.println("" + getClass().getName()); 
    } 
} 

如果AA級注入,調用測試()將輸出

package.test.AA$$EnhancerByGuice$$e2d19b62 

升級到吉斯4.1的輸出後,

package.test.AA 

添加以下到模塊的變化注入代理。這是@Transactional如何工作使用AOP

bind(AA.class); 
上SO
+0

謝謝,我今天也碰到過。這可能是最佳做法。 – Walter

相關問題