Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

As per hibernate doc(at http://docs.jboss.org/hibernate/core/3.5/javadoc/org/hibernate/Session.html#update(java.lang.Object)) for update method void update(Object object) throws HibernateException here object as parameter is said to be in detached state.But i tried some examples where this object passed can be a object in persistent state too.So what i did is

person = (Person)session. get(Person.class,1);
person.setName("scott");
// At this point of time person is in persistent stage as it has adentifier attached to it and also attached to session.
session.update(person);

it updated succesfully. So as per my understanding passed object as paramter in update method can be in either in persistent state or detached state right?

share|improve this question
add comment

2 Answers

up vote 0 down vote accepted

So as per my understanding passed object as paramter in update method can be in either in persistent state or detached state right?

Yes , you can pass the persistent object or detached object to the update() . But update() only has effect on the detached object. Calling update() on the persistent object is redundancy and does nothing because the object is already persistent which its state will automatically synchronize to the DB during flushing . So ,from your code , person's name can be updated to scott is due to flushing , but not due to update(). You can proof it by removing update() and the name can still be updated to the scott!

update() only has effect on the detached object , which can make the detached instance persistent and managed by the hibernate session.

share|improve this answer
add comment

That's odd. My documentation for update() is:

Update the persistent instance with the identifier of the given detached instance. If there is a persistent instance with the same identifier, an exception is thrown. This operation cascades to associated instances if the association is mapped with cascade="save-update".

So, I don't think it works for detached objects. I generally merge() them first or refresh() the object if it's detached.

Have you tried it by closing the session, opening a new one and then updating?

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["        <li><a href=\"http://area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"http://careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2014 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a> \r\n                with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2014.3.7.1431\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Stack Overflow works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\"></div>\r\n    </nosc"], "copyright__copyright__copyright": ["tances if the association is mapped with cascade=\"save-update\".\n\nSo, I don't think it works for detached objects. I generally merge() them first or refresh() the object if it's detached.\n\nHave you tried it by closing the session, opening a new one and then updating?\n\nshare|improve this answer\nadd comment\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}