2

こんにちは私はGoogleAppEngineSDK1.7.3とJPAforDatanucleusを使用しています。変数にあるオブジェクトを更新できませんt

この質問に対する受け入れられた回答に示されているように、コードを記述しました。

コードを使用する場合:

    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 "com.appspot.diasporajava.entities.Post@447cc9c9" 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)

永続性マネージャーを常に開いておく必要がありますか?

関連するチケット

オブジェクトの作成に使用するocdeは次のとおりです。

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

1 に答える 1

2

EntityManager問題は、オブジェクトを最初に取得したときに閉じなかったことtです。

于 2012-11-03T22:07:14.817 に答える