我只是想了解 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/