Java hibernate session.save()插入的值与对象中的值不同
我没什么问题。当我尝试向数据库插入新值时,函数save()会向我插入不同的值我该怎么办 这是我的功能Java hibernate session.save()插入的值与对象中的值不同,java,database,hibernate,Java,Database,Hibernate,我没什么问题。当我尝试向数据库插入新值时,函数save()会向我插入不同的值我该怎么办 这是我的功能 public void updateListOfElements(List<Dokumenty> list) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = null; try {
public void updateListOfElements(List<Dokumenty> list) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
for (Dokumenty dokument : list) {
Dokumenty dokumentToUpdate =
(Dokumenty) session.get(Dokumenty.class, dokument.getId());
dokumentToUpdate.setAktywny('N');
session.update(dokumentToUpdate);
// id z dupy wpisuje
dokument.setId(10114);
session.save(dokument);
}
transaction.commit();
} catch (HibernateException e) {
if (transaction != null) {
transaction.rollback();
}
} finally {
session.close();
}
}
公共无效更新组件(列表){
Session Session=HibernateUtil.getSessionFactory().openSession();
事务=空;
试一试{
事务=session.beginTransaction();
for(Dokumenty dokument:list){
Dokumenty dokumentToUpdate=
(Dokumenty)session.get(Dokumenty.class,dokument.getId());
dokumentToUpdate.setAktywny('N');
更新(dokumentToUpdate);
//id z dupy wpisuje
dokument.setId(10114);
session.save(dokument);
}
commit();
}捕获(休眠异常e){
if(事务!=null){
transaction.rollback();
}
}最后{
session.close();
}
}
您应该使用save或update
而不是save
dokument.setId(10114);
session.saveOrUpdate(dokument);
调用saveOrUpdate()
时,如果标识符存在,它将调用update方法,否则将调用save方法
如果调用save()
方法,则将对象存储到数据库中。这意味着它将插入一个条目
在继续之前,请看一看:
我的建议:
始终使用saveOrUpdate//if record existed update nother new
使用session.merge()
。因为,在Hibernate中使用session.saveOrUpdate()时可能会引发UnuniqueObjectException-请参阅更多信息:是否确实更新了相同的记录或插入了不同的记录?