jpa - 更新数据库中的行

标签 jpa crud

我正在尝试学习如何进行 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();
    }
}

有人能指出我在这方面的正确方向吗?截至目前,编辑方法仅添加另一行。

最佳答案

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

public void edited(EntityDB entityDB) {       

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

关于jpa - 更新数据库中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15905524/

相关文章:

mysql - 如何从表中检索特定列 --- JPA 或 CrudRepository?我只想从用户表中检索电子邮件列

java - 列 'column' 不能为空

java - JPA 查询根据外键从不同表中获取数据

Spring Boot Hibernate 无法反序列化 : invalid stream header: 3433302E

user-interface - CRUD 应用程序中网格的替代品?

javascript - React.js 中的 Bootstrap 模式

java - 仅具有 CascadeType.REMOVE 的双向 @OneToOne 保存更改 : that is not wanted

java - spring boot 启动报错 BOOT-INF/classes not found

asp.net - 最好的 ASP.NET CRUD 解决方案?

elasticsearch - Elasticsearch CRUD 需要刷新吗?