如何防止Spring / Hibernate自动将修改提交到数据库?

时间:2010-02-09 17:58:16

标签: hibernate spring

我正在使用Spring和Hibernate。我有一个使用HibernateTemplate从数据库中检索的对象。

当我修改这个对象时,Hibernate会在数据准备好插入之前插入数据库,结果就是“无法将NULL插入...”这一行的很多数据库错误。

有没有办法告诉Spring / Hibernate“在我调用HibernateTemplate.persist()之前不要用这个来更新数据库”?我查看了HibernateTemplate javadoc但找不到任何内容

2 个答案:

答案 0 :(得分:1)

Hibernate正在刷新更改,因为您使用事务范围的持久性上下文。这意味着当事务提交时,所有托管实体都与数据库同步。如果你不喜欢它,那么就不要让你的方法成为交易方法。这样你获得的实体将不会与数据库同步 - 不会有任何事务提交。

答案 1 :(得分:0)

尝试注释您不希望进行任何修改的方法:

@Transactional(readOnly = true)
public yourMethod(){
    //some hibernate-spring code here
}