Java 使用EntityManager添加到数据存储会引发异常

Java 使用EntityManager添加到数据存储会引发异常,java,google-app-engine,google-cloud-datastore,Java,Google App Engine,Google Cloud Datastore,我使用以下代码向数据存储添加一个实体。然而,我遇到了一个我无法解决的异常。有什么见解吗 EntityManager em = EMFService.get().createEntityManager(); MyEntity temp = new MyEntity (param1, numOptions, option1, option2, option3); em.persist(temp); em.close(); 我在上述代码的em.close()行中得到以下异常: javax.pers

我使用以下代码向数据存储添加一个实体。然而,我遇到了一个我无法解决的异常。有什么见解吗

EntityManager em = EMFService.get().createEntityManager();
MyEntity temp = new MyEntity (param1, numOptions, option1, option2, option3);
em.persist(temp);
em.close(); 
我在上述代码的
em.close()
行中得到以下异常:

javax.persistence.PersistenceException: Cannot make object transient since object is new and not yet committed
    at org.datanucleus.api.jpa.NucleusJPAHelper.getJPAExceptionForNucleusException(NucleusJPAHelper.java:302)
    at org.datanucleus.api.jpa.JPAEntityManager.close(JPAEntityManager.java:197)
    at com.vikrams.examquestweb.dao.Dao.addQuestion(Dao.java:34)

奇怪的是,在Google中搜索异常描述“
无法使对象暂时化,因为对象是新的且尚未提交的”
”并没有给出匹配结果。我是第一个得到这个的人吗。也许我在某个地方犯了一些非常愚蠢的错误。请提供帮助。

首先,您还需要打开一个事务以保存任何实体。 执行此操作的基本代码如下所示:

em.getTransaction().begin();    
em.persist(temp);
em.close(); 
em.getTransaction().commit();
em.close();

然后,您还应该发布实体的外观和映射方式。

就是这样。谢谢:)