Hibernate JavaDoc утверждает, что Session.update(Object o)
вызовет исключение, если уже существует постоянный экземпляр o
, верно?
If there is a persistent instance with the same identifier, an exception is thrown.
Однако следующий код ничего не выдает при запуске. И я думаю, что это должно!
Email email = new Email("andre", "girafa", "hi");
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
session.save(email);
session.update(email);
session.update(email);
tx.commit();
// didn't throw... Let's try again
tx = session.beginTransaction();
session.update(email);
session.update(email);
tx.commit();
session.close();
// still nothing! :(
Как вы можете сказать, дважды Я пытаюсь сделать несколько раз update()
с, но Hibernate все еще чувствует себя спокойно.
У кого-нибудь есть догадка, почему?
РЕДАКТИРОВАТЬ: кажется, что он бросил бы, только если другой эквивалентный объект , например, email2
с таким же идентификатором, как email
. Я предполагаю, что документация там была немного неаккуратной.