我只是想了解JSF和JPA,但每當我嘗試將一個對象持久存儲到數據庫中似乎都不會寫出來。 下面是我使用的代碼: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,但是這也沒有做任何事。 我真的難住,爲什麼這不工作。這可能是一些新手的錯誤,但如果有人在這裏可以幫助我,我會愛上它。
在此先感謝!
除非使用允許非事務寫入的JPA實現(例如DataNucleus JPA),否則必須有事務才能將數據寫入數據存儲(按照JPA規範)。解決你的錯誤使用該路線 – DataNucleus
@DataNucleus我試着把事務重新放回來,也嘗試使用此回顯一些文本回我的頁面:'FacesContext.getCurrentInstance()。addMessage(null,new FacesMessage(FacesMessage.SEVERITY_INFO, 「abcd」,「dcba」));' 當我離開交易時,它顯示消息,否則不顯示... – Firenter
顯示您的persistence.xml,您使用的是什麼JPA impl? – xeye