我只是想了解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,但这也没有做任何事情。 我真的很难过为什么这不起作用。这可能是一些新手的错误,但如果有人在这里可以帮助我,我会很高兴。
提前致谢!
答案 0 :(得分:0)
首先,您能够写入日志吗?在指定持久性单元时使用JTA启动事务将引发异常,因此您可能刚刚在容器日志文件中缺少异常。
其次,这是一个JTA PU,因此它需要启动一个与EM关联的JTA事务,并且您将需要注入em而不是自己创建工厂。首先查看JPA应用程序服务器示例,了解它们的设置方式: http://wiki.eclipse.org/EclipseLink/Examples/JPA
答案 1 :(得分:0)
嘿我发现了为什么事务没有运行:我使用的实现没有使用JTA,它使用了RESOURCE_LOCAL持久性单元。这是我在设置项目时看到的东西。
好友,我的好友告诉我检查服务器日志。