私はHibernateを使い始めて、Webアプリケーションから私のDBにデータを保存しようとしています。私のデータを休止状態で維持できません
私のサーブレットのコードはここにある:
javax.persistence.TransactionRequiredException:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter pr = response.getWriter(); ServletContext ctx = super.getServletContext(); try { EntityManagerFactory emf = Persistence.createEntityManagerFactory("agricultural-register-server"); EntityManager em = emf.createEntityManager(); em.joinTransaction(); VolumeType vt = new VolumeType(1, "asd"); Volume v = new Volume("a", "b", "c", 123123, vt, 1); em.persist(vt); em.persist(v); em.flush(); em.close(); RequestDispatcher dispatcher = ctx.getRequestDispatcher("/index.jsp"); dispatcher.forward(request, response); } catch (Exception e) { pr.println("Error occured while testing"); e.printStackTrace(); } }
私の問題は、それは私にエラーを与えることである何のトランザクションが進行中でない
私はpersistence.xmlにオプションを入れました:
<プロパティ名= "hibernate.hbm2ddl.auto" 値= "作成" />
、それは大丈夫私のテーブルを作成します。だから私は私の問題は、私は自分のコードをトランザクションにする必要があると思う。しかし、私はどうすればいいのですか?
私がしようとした場合:
em.getTransaction(); //....
それは(私は私のpersistence.xmlの「JTA」としての私のトランザクションタイプを宣言したので、私は思う)エラーになります。
だから誰でも私にこれを手伝うことができますか?
ありがとうございます。
私はこれを行うことによって、私の問題を解決しました:
Context ic = new InitialContext();
UserTransaction ut = (UserTransaction)ic.lookup("java:comp/UserTransaction");
ut.begin();
//...transactional code
ut.commit();
ヘルプには、このリンクで見つける:http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/transactions/transactions6.html
しかし、いずれにせよ、この上でいくつかのtoughtsはようこそとなります。
私はpersistence.xmlファイルJTAトランザクションタイプで指定したため、エラーが表示されます。 (私はそれが私がトランザクションを使用することができないものの理由だと思う)。 – artaxerxe