5

我只是想了解 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,但这也没有做任何事情。我真的很困惑为什么这不起作用。这可能是一些新手的错误,但如果有人可以帮助我,我会很高兴。

提前致谢!

4

2 回答 2

0

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

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

于 2012-12-02T20:15:28.600 回答
0

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

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

于 2012-12-03T07:24:07.480 回答