変数 = manager.find( [class] , 値 );まず、EntityManagerクラスの「find」メソッドを使って、IDを指定して更新するエンティティを取得します。
manager.getTransaction().begin();トランザクションをスタートし、そこでEntityManagerの「merge」というメソッドを実行します。これは、引数に指定したエンティティをデータベースのテーブルにマージする(既にあるレコードに合成する)ものです。
manager.merge(……エンティティ……);
manager.getTransaction().commit();
<% MyDataEntity entity = (MyDataEntity)request.getAttribute("entity"); %>
<form method="post" action="/hello">
<input type="hidden" name="id" value="<%= entity.getId() %>">
<div><input type="text" name="name" value="<%= entity.getName() %>"></div>
<div><input type="text" name="mail" value="<%= entity.getMail() %>"></div>
<div><input type="text" name="tel" value="<%= entity.getTel() %>"></div>
<div><input type="submit" value="Update"></div>
</form>
http://localhost:8080/hello?id=番号
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
package com.tuyano.libro; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.persistence.Query; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/hello") public class MyDataEntityServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected EntityManagerFactory factory = Persistence.createEntityManagerFactory("mydataentity-persistance"); @Override public void init() throws ServletException { super.init(); EntityManager manager = factory.createEntityManager(); try { manager.getTransaction().begin(); manager.persist( new MyDataEntity("taro", "taro@yamada", "090-999-999") ); manager.persist( new MyDataEntity("hanako", "hanako@flower", "080-888-888") ); manager.persist( new MyDataEntity("sachiko", "sachiko@happy", "070-777-777") ); manager.getTransaction().commit(); } finally { manager.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = getId(request); MyDataEntity entity = null; EntityManager manager = factory.createEntityManager(); if (id > 0) { entity = manager.find(MyDataEntity.class, id); } else { entity = new MyDataEntity(); } request.setAttribute("entity", entity); Query query = manager.createQuery("select i from MyDataEntity i"); List list = query.getResultList(); request.setAttribute("list", list); RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request,response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = getId(request); String name = request.getParameter("name"); String mail = request.getParameter("mail"); String tel = request.getParameter("tel"); EntityManager manager = factory.createEntityManager(); MyDataEntity entity = manager.find(MyDataEntity.class, id); entity.setName(name); entity.setMail(mail); entity.setTel(tel); manager.getTransaction().begin(); manager.merge(entity); manager.getTransaction().commit(); request.setAttribute("entity", entity); response.sendRedirect("/hello"); } private int getId(HttpServletRequest request) { String id_str = request.getParameter("id"); int id = 0; try { id = Integer.parseInt(id_str); } catch(NumberFormatException e){ e.printStackTrace(); } return id; } }
<< 前へ | 次へ >> |