这是我的Entity
:
@Entity
@Table(name = "example")
@Where(clause = "count >= 0")
public class Example {
@Column(name="count")
private Integer count;
//some code
}
这是我的DML
操作:
@Transactional(rollbackFor = Exception.class)
public void updateService {
update();
}
void update(){
// findOne(Id) - if null throw Exception
// --count & save() //line 8
// findOne(Id) if null throw Exception //line 9
// --count & save()
// if something fails
throw new Exception("Exception thown.");
}
假设db中count
的{{1}}初始值为0
。 Id
也将返回记录,因为line 9
尚未提交。没有line 8
exception
。它不会thrown
并更新数据库,这不应该发生。任何人都可以提供帮助,如果存在任何rollback
/ hibernate
解决方案。
答案 0 :(得分:1)
通过对count
column
应用约束可以避免这种情况:
@Column(name = "count")
@Min(0)
private Integer count;
现在save()
throw
org.springframework.transaction.TransactionSystemException
。