Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新JPA实体模型_Java_Google App Engine_Jpa - Fatal编程技术网

Java 更新JPA实体模型

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的Google应用程序引擎上。我设想,在某个时刻,随着应用程序的发展,新的属性将添加到java类中,需要对jpa模型进行更新。一旦应用程序投入生产,通常如何处理此类更改

例如,假设我将一个新字段(foo)添加到我的类(bar)中,并且我说foo不可为null。在事务处理过程中,EntityManager读入一个旧的bar对象(在添加foo之前),更新另一个字段,并尝试提交更改,然后发生异常。这是我想要防止的事情


一般来说,在jpa模型投入生产后,是否有一个最佳实践来更新它,以避免对已持久化的旧对象的约束冲突?

不幸的是,在gae中,这样更新模型并不简单。您必须更新所有现有实体或创建“按需更新”,以便这些实体不会违反您的新条件


例如,添加一个不可为空的字段会强制您提前更新实体,因为JPA不允许您在事后更新实体。

您的意思是使用“数据存储”或appengine sql(即mysql)的GAE?如果是前者,那么为什么要标记Hibernate呢?我的错误是,并不是要标记Hibernate,因为Google使用他们自己的JPA实现。是的,使用JPA将数据存储在数据存储中