google-app-engineplayframeworkplayframework-1.xsiena

Play Framework With Google appengine Model update


I have a Play application which is deployed on Google Appengine. I use Play 1.2.4 with modules: crudsiena 2.0.1 gae-1.6 secure siena 2.0.5

My problem is the followings: I have deployed the application with several number of Models and the app is running just fine. After a while I decided to improve the application which required the introduction of new variables in the Model classes. If I do this, my localhost is working just fine, however when I upload the new version to the GAE I receive errors when I try to access the model objects created with the old version as it cannot associate the new variable:

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)

In this case the boolean reportEnabled variable was newly introduced to the Dataset class. My question is how to make the application work by keeping the old objects as well (probably just provide a default value to the new variables).

Your help is very much appreciated.


Solution

  • The problem is solved by changing boolean to Boolean. It did not change the structure of the database in the previous entries, but at least I get no error any more.