永続オブジェクトの自動更新を休止することはできますか?hibernate/JPAで自動更新を無効にする方法
@Transactional
public ResultTO updateRecord(RequestTO requestTO) {
Entity entity = dao.getEntityById(requestTO.getId());
// now update the entity based on the data in the requestTO
ValidationResult validationResult = runValidation(entity);
if(validationResult.hasErrors()) {
// return ResultTO with validation errors
} else {
dao.persist(entity);
}
}
は、ここでは、コードで何が起こるかですが、私は、永続的な状態であることが、私は、エンティティのフィールドの一部を更新するために、Hibernateが考えられるであろうエンティティを取得し、その後、検証にエンティティを渡します。検証に失敗した場合は、検証を成功させてエンティティを永続化させてから、udpateしないでください。
ここでは、このフローの主な問題です:検証に使用するエンティティを更新したため、(DAOで)persist()メソッドを呼び出すかどうかは関係ありません。レコードは常にhibernateがエンティティが変更されたことを検出し、更新のためにフラグを立てるため、更新されます。
私は検証を行い、問題を回避する方法を変更できるので、回避策には興味がありません。私は永続オブジェクトを自動的に更新する休止状態の機能をどのように無効にできるのかを知ることに興味があります。
JPAのhibernateの実装を使用していることに注意してください。だから、Hibernate固有のAPIを扱っているHibernate固有の答えは私にとってはうまくいかないでしょう。
私は休止状態の設定を探して、この動作を停止するように設定できても運がないかどうかを確認しようとしました。
おかげ
--edit --- 私はこの解決策を見つけることができませんでしたので、私は、私が使用して宣言的トランザクションにいるにもかかわらず、いかなるのRuntimeExceptionをスローせずにトランザクションをロールバックすることにしました:
TransactionInterceptor.currentTransactionStatus()。setRollbackOnly();
チャームのように機能します。
おかげで、私はイムは、回避策を探していないと述べたように、私はすでに、イムは、自動更新をディアブルできるように固有の設定を探していることがあります。 – lutfijd