2012-11-02 56 views
2

您好我正在使用Google App Engine SDK 1.7.3和JPA Datanucleus。 我無法更新變量t中的對象。Appengine JPA更新

我寫了我的代碼,如this question的接受答案中所示。

如果我使用的代碼:

PersistenceManager persistenceManager=JDOHelper.getPersistenceManager(t); 
    persistenceManager.refresh(t); 
    return t; 

我得到:

java.lang.UnsupportedOperationException: Method not supported with JPA 
    at org.datanucleus.api.jpa.JPAPersistenceManager.refresh(JPAPersistenceManager.java:693) 
    at com.appspot.diasporajava.dao.GenericDaoImpl.update(GenericDaoImpl.java:74) 

如果我使用的代碼:

return this.emf.createEntityManager().merge(t); 

如果EMF是一個EntityManagerFactory的。

我得到:

javax.persistence.PersistenceException: Object with id "[email protected]" is managed by a different Object Manager 
    at org.datanucleus.api.jpa.NucleusJPAHelper.getJPAExceptionForNucleusException(NucleusJPAHelper.java:302) 
    at org.datanucleus.api.jpa.JPAEntityManager.merge(JPAEntityManager.java:576) 
    at com.appspot.diasporajava.dao.GenericDaoImpl.update(GenericDaoImpl.java:76) 

我必須保持開放我的持久性管理所有的時間?

A related ticket

我用它來創建對象的OCDE如下:

@Override 
@Transactional 
public T create(final T t) {  
    EntityManager em = this.emf.createEntityManager(); 
    em.persist(t); 
    em.close(); 
    return t; 
} 

回答

2

的問題是,我沒有關閉EntityManager,當我第一次的對象t