Last updated by 5 years ago

Page: 1.0.4 Release Notes, Version:2

Grails 1.0.4 Release Notes

14th of November 2008

SpringSource and the Grails development team are pleased to announce the 1.0.4 release of the Grails web application development framework.

Grails is a dynamic web application framework built on Java and Groovy, leveraging best of breed APIs from the Java EE sphere including Spring, Hibernate and SiteMesh. Grails brings to Java and Groovy developers the joys of convention-based rapid development while allowing them to leverage their existing knowledge and capitalize on the proven and performant APIs Java developers have been using for years.

Further information about the release can be obtained using the links below:

New features in 1.0.4 are described below.

New Features

As a point release Grails 1.0.4 mainly contains improvements and bug fixes, but there are a few new features to explore.

Mapping of complex Hibernate types

Grails can now take advantage of Hibernate types that map onto multiple columns:

static mapping =  {
     amount type: MonetaryUserType, {
         column name: "value"
         column name: "currency", sqlType: "char", length: 3

Upgrade notes

To upgrade simply run the upgrade command:

grails upgrade

Further notes:

  • The "range" constraint now produces the base error codes "range.toosmall" and "range.toobig" rather than "size.toosmall" and "size.toobig".
  • The "monitorCallback" variable has been replaced by "monitorCheckCallback" and "monitorRecompileCallback" ones. "monitorCheckCallback" is called every time the monitor thread checks for changes, whereas "monitorRecompileCallback" is only called when the application is recompiled and reloaded.
  • If you are using dynamic scaffolding, be aware that the model passed to the views by a scaffolded controller has changed. On single object views (create,edit,show) the model now contains <domainClass>Instance instead of just <domainClass>. The list action now passes <domainClass>InstanceList instead of <domainClass>List. e.g. for domain class Foo, change references to variable foo in your views to fooInstance and references to fooList to fooInstanceList