Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate session.save()插入的值与对象中的值不同_Java_Database_Hibernate - Fatal编程技术网

Java hibernate session.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 {

我没什么问题。当我尝试向数据库插入新值时,函数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();
        }
    }
公共无效更新组件(列表){
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-请参阅更多信息:

是否确实更新了相同的记录或插入了不同的记录?