2014-05-05 88 views
0

我有一個DB類中人員的對象{id=1, name="a"} 我創建了該對象的一個​​新實例Person p = new Person(1,"b")。 然後我做getSession().saveOrUpdate(p)休眠不更新事務性方法中的持久對象

我希望hibernate將名稱從「a」更新爲「b」,但它不這樣做。 我已經把這段代碼放入了一個Transactional方法。

+2

的問題是在管線231這是我的水晶球說什麼。 –

+0

不,我認爲它的排隊沒有235 @JBNizet。 –

+0

@JBNizet暗示了什麼(哦,這麼微妙),是因爲如果你沒有發佈(至少)你正在使用的DAO和服務方法,以及你試圖保存的對象片段,我們不能幫你顯示對象所具有的字段)。 – JamesENL

回答

1

您需要按以下方式從數據庫中加載現有數據,

Person p = session.load(Person.class, 1); 
p.setName("b"); 
session.update(p); 
transaction.commit(); 
session.clear(); 
session.close(); 
+0

任何想法爲什麼我的代碼既不會拋出異常也不會更新數據 – Mangoose

+1

Hibernate會話只會更新會話中附加的對象上的對象。使用會話加載對象的原因是爲了附件目的。 –