2

CRUD 操作の方法を学習しようとしていますが、DB 内の既存の行を更新する方法がわかりません。作成部分と削除部分は機能しましたが、更新部分の解決方法がよくわかりません。私はそれについてたくさんグーグルで調べましたが、完全に理解できる説明が見つかりません。

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless
public class Modell {

    @PersistenceContext(unitName = "mess")
    private EntityManager em;
    private EntityTransaction tx;

    public void addMessage(String message) {
        EntityDB me = new EntityDB();
        me.setMessage(message);
        em.persist(me);
    }


    public void delete(EntityDB entityDB) {
        em.remove(em.merge(entityDB));

    }

    public void edited(EntityDB entityDB) {
        EntityDB me = new EntityDB();
        //tx.begin();
        em.persist(me);
      // EntityDB me = new EntityDB();
        me.setMessage("edited");
        em.merge(entityDB);
        //tx.commit();

    }

    public List<EntityDB> findAll() {
        Query namedQuery = em.createNamedQuery("findAllMessageEntities");
        return namedQuery.getResultList();
    }
}

誰かがこれについて正しい方向に私を向けることができますか. 今のところ、編集メソッドは別の行を追加するだけです。

4

1 に答える 1

4

エンティティを更新する必要がある場合は、新しいインスタンスを作成するのではなく、データベース内の既存のエンティティに変更を適用する必要があります。

public void edited(EntityDB entityDB) {       

  EntityDB me = em.find(EntityDB.class, pk); //-- Else create query
  me.setMessage("edited");
  em.merge(me);
}
于 2013-04-09T17:28:14.347 に答える