Jpa 更新数据库中的行
我试图学习如何执行CRUD操作,但似乎不知道如何更新数据库中的现有行。我已经让创建和删除部分工作,但我真的不知道如何解决更新部分。我在谷歌上搜索了很多,但是我找不到一个我完全理解的解释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
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()
调用已将找到的实体放置在持久性上下文中。