2012-11-02 4 views
2

안녕하세요 저는 Datanucleus 용 Google App Engine SDK 1.7.3 및 JPA를 사용하고 있습니다. 변수가 t 인 개체를 업데이트 할 수 없습니다.Appengine JPA 업데이트

나는 this question에 대한 대답으로 표시된 코드를 작성했습니다. 내가 코드를 사용하는 경우

: 나는이 코드를 사용하는 경우

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) 

:

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

를 내가 얻을 기전력이의 EntityManagerFactory입니다

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

.

내가 얻을 :

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.

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

답변

2

문제는 내가 객체 t 처음 왔을 때 나는 EntityManager을 닫지 않은 것입니다 :

내가 개체를 만드는 데 사용하는 ocde는 다음과 같습니다.