SampleEntity entity = manager.find(SampleEntity.class, id);SampleEntityインスタンスを取得しています。これはnewで新たに作るのではなく、EntityMangerの「find」メソッドを呼び出します。findは、特定のIDのエンティティを取り出すためのものです。これは引数にエンティティクラスのclass値と、取り出すエンティティのID値をそれぞれ指定します。entity.setName("**update name**");編集が終わったら、新規作成と同様にトランザクションを使って更新処理をします。これは、基本的には新規作成と同じような流れになっていますが、更新を行う部分だけが違っています。
entity.setMail("**update@mail**");
EntityTransaction transaction = manager.getTransaction();既に保存されているエンティティの更新は、「merge」というメソッドを使って行います。引数に更新するエンティティクラスのインスタンスを指定すると、そのエンティティの値を最新の状態に更新します。
transaction.begin();
manager.merge(entity);
manager.flush();
transaction.commit();
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
package com.tuyano.libro.db;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
private static EntityManager manager;
public static void main(String[] args) {
ApplicationContext app = new
AnnotationConfigApplicationContext(SampleEntityConfig.class);
EntityManagerFactory factory = app.getBean(EntityManagerFactory.class);
manager = factory.createEntityManager();
// make dummy
makeDummyData();
// update entity
updateEntity(1L);
updateEntity(3L);
// get list
Query query = manager.createQuery("from SampleEntity");
List list = query.getResultList();
printList(list);
System.out.println("...ok.");
}
public static void makeDummyData() { 略 }
public static void printList(List list) { 略 }
// update entity
public static void updateEntity(long id) {
SampleEntity entity = manager.find(SampleEntity.class, id);
entity.setName("**update name**");
entity.setMail("**update@mail**");
EntityTransaction transaction = manager.getTransaction();
transaction.begin();
manager.merge(entity);
manager.flush();
transaction.commit();
}
}
| << 前へ | 次へ >> |