我有一个spring
方法:在构造对象之后验证实体,该对象先前是从DB中获取的。
@Transactional(rollbackFor={ValidationException.class})
public Object approve(Command command) throws ValidationException {
Object obj = merger.mergeWithExistingobject(command); // where I am fetching object from DB with old values and construct the new object
validatorService.validate( obj ); // which throws ValidationException
return saveObject(obj);
}
但是不幸的是,即使在抛出了
ValidationException
之后。这些值仍保留在DB中。我如何避免这种情况。 最佳答案
您可以在ValidationException
上逐出实体:
try {
validatorService.validate( obj );
} catch (ValidationException e) {
entityManager.detach(obj);
//Or with Hibernate API
//session.evict(obj);
throw e;
}