我正在使用以下代码将实体添加到数据存储区。但是,我得到了一个我无法解决的例外情况。任何见解?
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中搜索异常描述“Cannot make object transient since object is new and not yet committed
”并不会产生匹配结果,这很奇怪。我是第一个得到这个的人。也许我在某个地方犯了一些非常愚蠢的错误。请帮忙。
答案 0 :(得分:1)
首先,您还需要打开一个事务来保存任何实体。 执行此操作的基本代码如下:
em.getTransaction().begin();
em.persist(temp);
em.close();
em.getTransaction().commit();
em.close();
然后你还应该发布你的实体看起来如何以及它是如何映射的。