我正在尝试学习如何进行 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/