2010-02-09 66 views
0

我正在使用Spring和Hibernate。我有一個用HibernateTemplate從數據庫中檢索的對象。如何防止Spring/Hibernate自動將修改提交給數據庫?

當我修改這個對象時,在數據準備好插入之前,Hibernate正在向數據庫插入數據,結果是很多數據庫錯誤沿着「無法將NULL插入......」的行。

有沒有辦法告訴Spring/Hibernate「不要用這個更新數據庫直到我調用HibernateTemplate.persist()」?我查看了HibernateTemplate javadoc,但找不到任何東西

+2

我覺得有一些非常錯誤的與你的應用程序,但我不能沒有看到代碼猜測。 – Bozho 2010-02-09 18:36:43

回答

1

由於您使用事務作用域持久化上下文,Hibernate正在刷新更改。這意味着當事務提交時,所有託管實體都與數據庫同步。如果你不喜歡它,那麼不要讓你的方法成爲事務性的方法。這樣你得到的實體將不會與數據庫同步 - 不會是任何事務提交。

+0

你需要更詳細的答案嗎? – 2010-02-09 19:28:04

0

嘗試註釋方法,在你不希望像任何修改:

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