変数 = 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;
}
}
| << 前へ | 次へ >> |