HibernateのJavaDocは、永続的なインスタンスがすでにo
である場合、Session.update(Object o)
は例外を発生させると言います。Hibernateは例外をスローしていません。(私はそうすべきだと思います)
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のは、私に簡単に取ります。
誰かがなぜ愚痴をしていますか?
EDIT:場合にのみemail
と同じIDで、例えば、email2
を別の同等のオブジェクトを投げるだろうと思われます。私はドキュメンテーションがちょっとうんざりしていたと思う。
はい!ドキュメントは決してそれを明確に書いてはいけません、そして、私はこの質問に私を導きます! – GMsoF