2013-03-05 158 views
0

我嘗試使用JPA將數據存儲在Google應用引擎數據存儲區中,並且遇到一些麻煩。在Google應用引擎數據存儲區中保存數據

我的代碼:

try { 
     for (int i = 1; i <= 10; i++) { 
      Employee emp = new Employee(); 

      emp.setFirstName("John" + i); 
      emp.setLastName("Doe" + i); 
      emp.setAge(i); 

      em.persist(emp); 
      em.refresh(emp); 
     } 

     em.flush(); 

    } catch (Exception e) { 

     e.printStackTrace(); 
    } finally { 
     em.close(); 
    } 

當我啓動它,數據存儲,但出現2個錯誤:

javax.persistence.TransactionRequiredException:此操作需要一個事務但它是不活動 - >線em.flush();在org.datanucleus.ObjectManagerImpl.flushInternalWithOrdering(ObjectManagerImpl.java:3887)

顯示java.lang.NullPointerException - >線em.close();

任何人都知道如何解決它們?

謝謝。

回答

0

嘗試:

em.getTransaction().begin(); 
//do all your persist logic 
em.getTransaction().commit(); 

更多:https://developers.google.com/appengine/docs/java/datastore/transactions

+0

它的工作原理,謝謝。但我可以在沒有交易的情況下做到這一點(僅供參考) – 2013-03-06 22:13:23

+0

您可以在不需要交易的情況下「堅持」,但如您所見,如果您想「沖洗」,則需要交易。我建議你使用txns,因爲你要保存多個數據。在發生錯誤的情況下,您可以簡單地回滾。 – ogzd 2013-03-07 07:04:35

相關問題