0

我有一个部署在 Google Appengine 上的 Play 应用程序。我将 Play 1.2.4 与模块一起使用:crudsiena 2.0.1 gae-1.6 secure siena 2.0.5

我的问题如下:我已经部署了具有多个模型的应用程序,并且该应用程序运行良好。过了一段时间,我决定改进需要在模型类中引入新变量的应用程序。如果我这样做,我的本地主机工作得很好,但是当我将新版本上传到 GAE 时,当我尝试访问使用旧版本创建的模型对象时收到错误,因为它无法关联新变量:

play.exceptions.JavaExecutionException: siena.SienaException: java.lang.IllegalArgumentException: Can not set boolean field models.Dataset.reportEnabled to java.lang.Integer
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:229)
at play.server.ServletWrapper$ServletInvocation.execute(ServletWrapper.java:540)
at play.Invoker$Invocation.run(Invoker.java:265)
at play.server.ServletWrapper$ServletInvocation.run(ServletWrapper.java:531)
at play.Invoker.invokeInThread(Invoker.java:67)
at play.server.ServletWrapper.service(ServletWrapper.java:130)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

在这种情况下,布尔型 reportEnabled 变量是新引入到 Dataset 类中的。我的问题是如何通过保留旧对象来使应用程序工作(可能只是为新变量提供默认值)。

非常感激您的帮忙。

4

1 回答 1

0

通过将布尔值更改为布尔值来解决问题。它没有改变以前条目中数据库的结构,但至少我不再收到错误。

于 2012-11-20T12:05:07.123 回答