我没有什么问题。当我尝试向数据库中插入新值时,函数 save() 向我插入了与对象不同的值 :(。我该怎么办?
这是我的功能
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();
}
}
最佳答案
您应该使用saveOrUpdate
而不是save
dokument.setId(10114);
session.saveOrUpdate(dokument);
当您调用 saveOrUpdate()
时,如果标识符存在,它将调用更新方法,否则将调用保存方法。
如果您调用save()
方法将一个对象存储到数据库中。这意味着它会插入一个条目。
在继续之前先看看:What are the differences between the different saving methods in Hibernate?
我的建议:总是使用 saveOrUpdate//如果记录存在更新,否则更新
关于java - hibernate session.save() 插入与对象不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253171/