简体   繁体   English

hibernate session.save()插入与对象不同的值

[英]hibernate session.save() inserts different values than are at object

I have little problem. 我没什么问题 When I try insert new value to database, function save() inserts me different values ​​than are at object :(. What should I do? 当我尝试向数据库中插入新值时,函数save()会向我插入与对象:(。)不同的值。我该怎么办?

Here is my function 这是我的功能

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();
        }
    }

You should use saveOrUpdate not save 您应该使用saveOrUpdate而不是save

 dokument.setId(10114);
 session.saveOrUpdate(dokument);

When you call saveOrUpdate() If the identifier exists, it will call update method else the save method will be called. 当您调用saveOrUpdate()如果标识符存在,它将调用update方法,否则将调用save方法。

If you call save() method stores an object into the database. 如果调用save()方法,则将对象存储到数据库中。 That means it insert an entry. 这意味着它将插入一个条目。

Before proceed have a look : What are the differences between the different saving methods in Hibernate? 在继续之前,请看一下: Hibernate中不同的保存方法之间有什么区别?

My suggetion: Always use saveOrUpdate //if record exists update otherwise new 我的建议: Always use saveOrUpdate //if record exists update otherwise new

Use session.merge() . 使用session.merge() Becuase, NonUniqueObjectException may be thrown when using Session.saveOrUpdate() in Hibernate - See more at: http://www.stevideter.com/2008/12/07/saveorupdate-versus-merge-in-hibernate/#sthash.WJEbdSaG.dpuf 因为,在Hibernate中使用Session.saveOrUpdate()时可能会抛出NonUniqueObjectException-有关更多信息,请参见: http : //www.stevideter.com/2008/12/07/saveorupdate-versus-merge-in-hibernate/#sthash.WJEbdSaG .dpuf

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM