JPA坚持不写入数据库

时间:2012-12-01 13:44:13

标签: 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,但这也没有做任何事情。 我真的很难过为什么这不起作用。这可能是一些新手的错误,但如果有人在这里可以帮助我,我会很高兴。

提前致谢!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

嘿我发现了为什么事务没有运行:我使用的实现没有使用JTA,它使用了RESOURCE_LOCAL持久性单元。这是我在设置项目时看到的东西。

好友,我的好友告诉我检查服务器日志。