getHibernateTemplate().saveOrUpdate(object);
メソッドの実行後に Hibernate が挿入または更新を行ったかどうかを知るにはどうすればよいですか?
saveOrUpdate() は次のことを行います。
- オブジェクトがこのセッションですでに永続化されている場合は、何もしない
- セッションに関連付けられた別のオブジェクトが同じ識別子を持つ場合、例外をスローします
- オブジェクトに識別子プロパティがない場合は、save()
- オブジェクトの識別子に、新しくインスタンス化されたオブジェクトに割り当てられた値がある場合、それを save()
- オブジェクトが または によってバージョン管理され、バージョン プロパティの値が新しくインスタンス化されたオブジェクトに割り当てられた値と同じである場合、それを save()
- それ以外の場合は update() オブジェクト
このメソッドを実行する前に、オブジェクトにすでに「主キー/ID」があるかどうかを常に確認する必要がありますが、これが唯一の方法ですか? はいの場合、一般的な方法で主キー/ID を取得するにはどうすればよいですか?
Serializable id = session.getIdentifier(entity);
またはObject id = entityManagerFactory.getPersistenceUnitUtil().getIdentifier(entity);
??