2015-06-19 98 views
0

我有一個在使用JPA的Google App Engine上運行的應用程序。我想在某些時候,隨着應用程序的發展,新的屬性將被添加到java類中,需要更新jpa模型。一旦應用程序在生產中,這樣的更改通常如何處理?正在更新JPA實體模型

例如,可以說我給我的班級(bar)添加了一個新字段(foo),並且我說foo不是空的。在事務過程中,EntityManager讀入一箇舊的bar對象(在添加foo之前),更新另一個字段,並嘗試提交更改,併發生異常。這是我想要防範的。

一般來說,是否有最佳實踐來更新jpa模型投入生產後,以避免約束衝突的舊對象已被持續?

+0

你的意思是GAE使用「數據存儲」或appengine-sql(即mysql)?如果前者那麼爲什麼是Hibernate標記? –

+0

我的錯誤,並不意味着要標記hibernate,因爲Google使用他們自己的JPA實現。是的,使用JPA將數據存儲在數據存儲中 – user1154644

回答

0

不幸的是,在gae中更新模型並不是微不足道的。您必須更新所有現有實體或創建「按需更新」,以便這些實體不會失敗您的新條件。

例如添加一個不可爲空的字段會強制您事先更新您的實體,因爲JPA不會允許您在事後更新實體。