Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set default value for Domain Class Values in Grails 2.2?

In my Grails domain class I want to set default values which do persist in the database. I use mysql as database. I tried to do this:

class A {

   long someValue = 1
   long someOtherValue
   boolean someBool = true
   boolean someOtherBool

   static mapping = {
      someOtherValue defaultValue: 1
      someOtherBool defaultValue: true  
   }
}

But nothing works. There are no default values set in the database. What do I have to change to get my default values being set correctly?

like image 973
confile Avatar asked May 12 '13 09:05

confile


2 Answers

If you are on Grails 2.2 above then you can use defaultValue. Look at Burt's answer here Try it, hope this helps:

Class A {
      Long someValue 
      Long someOtherValue

      Boolean someBool
      Boolean someOtherBool

     static mapping = {
        someOtherValue defaultValue: 1
        someOtherBool  defaultValue: true  
        ...
     } 

}
like image 135
Alidad Avatar answered Sep 22 '22 01:09

Alidad


I found that for defaultValue to work with String properties, I needed to put double quotes around single quotes and for defaultValue to work for numeric properties, I needed to put double quotes around the number or the defaults wouldn't appear in the DDL. So, for instance:

static mapping = {
   myStringProperty defaultValue: "'Cash'"
   myIntProperty defaultValue: "0"
}

Also, as far as I can tell, default values do not work for properties that are enums.

like image 20
Ed OConnor-Giles Avatar answered Sep 19 '22 01:09

Ed OConnor-Giles