Java 更新JPA实体模型
我有一个应用程序运行在使用JPA的Google应用程序引擎上。我设想,在某个时刻,随着应用程序的发展,新的属性将添加到java类中,需要对jpa模型进行更新。一旦应用程序投入生产,通常如何处理此类更改 例如,假设我将一个新字段(foo)添加到我的类(bar)中,并且我说foo不可为null。在事务处理过程中,EntityManager读入一个旧的bar对象(在添加foo之前),更新另一个字段,并尝试提交更改,然后发生异常。这是我想要防止的事情Java 更新JPA实体模型,java,google-app-engine,jpa,Java,Google App Engine,Jpa,我有一个应用程序运行在使用JPA的Google应用程序引擎上。我设想,在某个时刻,随着应用程序的发展,新的属性将添加到java类中,需要对jpa模型进行更新。一旦应用程序投入生产,通常如何处理此类更改 例如,假设我将一个新字段(foo)添加到我的类(bar)中,并且我说foo不可为null。在事务处理过程中,EntityManager读入一个旧的bar对象(在添加foo之前),更新另一个字段,并尝试提交更改,然后发生异常。这是我想要防止的事情 一般来说,在jpa模型投入生产后,是否有一个最佳实践
一般来说,在jpa模型投入生产后,是否有一个最佳实践来更新它,以避免对已持久化的旧对象的约束冲突?不幸的是,在gae中,这样更新模型并不简单。您必须更新所有现有实体或创建“按需更新”,以便这些实体不会违反您的新条件
例如,添加一个不可为空的字段会强制您提前更新实体,因为JPA不允许您在事后更新实体。您的意思是使用“数据存储”或appengine sql(即mysql)的GAE?如果是前者,那么为什么要标记Hibernate呢?我的错误是,并不是要标记Hibernate,因为Google使用他们自己的JPA实现。是的,使用JPA将数据存储在数据存储中