Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 更新数据库中的行_Jpa_Crud - Fatal编程技术网

Jpa 更新数据库中的行

Jpa 更新数据库中的行,jpa,crud,Jpa,Crud,我试图学习如何执行CRUD操作,但似乎不知道如何更新数据库中的现有行。我已经让创建和删除部分工作,但我真的不知道如何解决更新部分。我在谷歌上搜索了很多,但是我找不到一个我完全理解的解释 import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import javax.persisten

我试图学习如何执行CRUD操作,但似乎不知道如何更新数据库中的现有行。我已经让创建和删除部分工作,但我真的不知道如何解决更新部分。我在谷歌上搜索了很多,但是我找不到一个我完全理解的解释

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();
    }
}
import java.util.List;
导入javax.ejb.Stateless;
导入javax.persistence.EntityManager;
导入javax.persistence.EntityTransaction;
导入javax.persistence.PersistenceContext;
导入javax.persistence.Query;
@无国籍
公共类模型{
@PersistenceContext(unitName=“mess”)
私人实体管理者;
私人实体交易;
公共无效添加消息(字符串消息){
EntityDB me=新的EntityDB();
me.setMessage(message);
坚持(我);
}
公共无效删除(EntityDB EntityDB){
em.remove(em.merge(entityDB));
}
已编辑的公共void(EntityDB EntityDB){
EntityDB me=新的EntityDB();
//tx.begin();
坚持(我);
//EntityDB me=新的EntityDB();
me.setMessage(“编辑”);
em.merge(entityDB);
//tx.commit();
}
公共列表findAll(){
Query namedQuery=em.createNamedQuery(“findAllMessageEntities”);
返回namedQuery.getResultList();
}
}

有人能给我指出这件事的正确方向吗。到目前为止,编辑方法只添加另一行。

如果必须更新实体,则必须对数据库中的现有实体应用更改,而不是创建新实例

public void edited(EntityDB entityDB) {       

  EntityDB me = em.find(EntityDB.class, pk); //-- Else create query
  me.setMessage("edited");
  em.merge(me);
}

如果必须更新实体,则必须对数据库中的现有实体应用更改,而不是创建新实例

public void edited(EntityDB entityDB) {       

  EntityDB me = em.find(EntityDB.class, pk); //-- Else create query
  me.setMessage("edited");
  em.merge(me);
}

顺便说一句,不需要
merge()
调用;
find()
调用已经将找到的实体放置在持久性上下文中;
find()
调用已将找到的实体放置在持久性上下文中。