2015-06-19 96 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不会允许您在事后更新实体。