項目使用播放框架1.3.3 我有一個這樣的控制器:播放框架1.3.3和Hibernate的緩存
public static void save(Item item) {
if (item.id != null) { //It means that item is not new, it is being edited
Item existingOldItem = Item.findById(item.id);
//Here I should have an old version of an item as "existingOldItem"
//and new one coming from http request as "item"
}
但問題是項目和existingOldItem是非常一致的。 Item.findById行不會返回數據庫中的舊項目,但會從http請求中返回新項目(與JPA.em()。createQuery相同)。我想play framework會在緩存中發送一個新項目,而findById將從緩存中返回項目,而不是從數據庫中返回。請有人能向我解釋其背後的邏輯以及如何解決問題的方法。
謝謝!這是使用JPA的任何Web框架的正常行爲,還是僅僅是一個Play!事情? –
這是玩!具體。如果其他Web框架做同樣的事情,這是巧合。如果任何其他框架這樣做,我會感到驚訝,因爲item.save()是一個Play!並不是JPA實體通常如何工作。如果其他框架在內存中修改JPA對象,Hibernate可能會將更改刷新到數據庫,而不會給應用程序邏輯一個拒絕它們的機會。但在Play!中,應用程序邏輯必須調用save()才能刷新所做的更改。 –