java - JPA 坚持不写入数据库

标签 java jpa eclipselink

我只是想了解 JSF 和 JPA,但每当我尝试将对象持久保存到数据库中时,它似乎并没有被删除。 这是我正在使用的代码:

@Named
@ManagedBean
@SessionScoped
public class BestemmingController implements Serializable{

@PersistenceUnit(unitName="RealDolmenTravelShopPU")
@PersistenceContext(unitName="RealDolmenTravelShopPU")

EntityManagerFactory emf = null;
public void submit(){


        try{
            emf = Persistence.createEntityManagerFactory("RealDolmenTravelShopPU");

            EntityManager em = emf.createEntityManager();

            //EntityTransaction et = em.getTransaction();
            //et.begin();

            Bestemming nieuweBestemming = new Bestemming();

            Land gezochtLand = em.find(Land.class, selectedLand);

            nieuweBestemming.setLand(gezochtLand);
            nieuweBestemming.setNaam(bestemmingNaam);

            em.persist(nieuweBestemming);

            //et.commit();
            //em.flush();
            em.close();
        }catch (Exception e){
            e.printStackTrace();
        }finally{
            emf.close();
        }
    }

我尝试使用 EntityTransaction,但它只是停止了我的应用程序,没有任何错误或任何事情。所以我把它留了下来,但它仍然没有写掉。 因此,我尝试单独调用 flush,但这也没有做任何事情。 我真的很困惑为什么这不起作用。这可能是一些新手错误,但如果这里有人可以帮助我,我会很高兴。

提前致谢!

最佳答案

首先,您可以写入日志吗?在指定持久性单元使用 JTA 时启动事务将引发异常,因此您很可能刚刚在容器日志文件中遗漏了异常。

其次,这是一个 JTA PU,因此它需要启动一个与 EM 相关联的 JTA 事务,并且您需要注入(inject) em 而不是自己创建一个工厂。首先查看此处的 JPA 应用程序服务器示例,了解它们是如何设置的: http://wiki.eclipse.org/EclipseLink/Examples/JPA

关于java - JPA 坚持不写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13660033/

相关文章:

java - JPA Criteria Query API 和两列排序

jpa - 使用 JTA 时无法使用 EntityTransaction

java - 如何在 Java 中为 Heroku 工作进程设置最小的 Maven pom.xml 文件?

java - 使用 JPA 和 Oracle 管理具有增量 ID 的复合主键

java - 使用 JPA2 Criteria API 选择 MAX 时间戳

sql - 查询、 native 查询、命名查询和类型化查询之间的区别

jpa - 如何分离实体 (JPA 2.0/EclipseLink/JBoss)

java - 如何加载实际的 Hibernate 实体关联而不是 LAZY 代理

java - 方法的重复

java - Libgdx 单击获取 x、y 坐标