2013-05-12 11 views
6

Nella mia classe di dominio Grails voglio impostare valori predefiniti che rimangono nel database. Io uso mysql come database. Ho provato a fare questo:Come impostare il valore predefinito per i valori della classe di dominio in Grails 2.2?

class A { 

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

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

Ma niente funziona. Non ci sono valori predefiniti impostati nel database. Cosa devo cambiare per ottenere i miei valori predefiniti impostati correttamente?

risposta

6

Se si utilizza Grails 2.2, è possibile utilizzare defaultValue. Guardo risposta di Burt here provare, spero che questo aiuta:

Class A { 
     Long someValue 
     Long someOtherValue 

     Boolean someBool 
     Boolean someOtherBool 

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

} 
+0

questo è quello che ho scritto come domanda. Uso Grails 2.2.2 ma non funziona. – confile

+1

Funziona per 2.3.6 per tutti i tipi, ma non per 'Boolean'. Ho provato 'defaultValue: 'true'' e' defaultValue: true'. Ma nella tabella è riempito con 'null'. Devo usare 'Boolean mycolumn = Boolean.TRUE' – Guus

+0

qual è il tuo database? – Alidad

2

ho trovato che per defaultValue di lavorare con le proprietà String, avevo bisogno di mettere i doppi apici intorno virgolette singole e per defaultValue di lavorare per le proprietà numeriche, ho era necessario inserire virgolette sul numero o le impostazioni predefinite non comparivano nel DDL. Quindi, ad esempio:

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

Inoltre, per quanto posso dire, i valori predefiniti non funzionano per le proprietà che sono enumerazioni.

+0

Purtroppo, questo non funziona per i booleani (che sono campi BIT con lunghezza 1). –

2
class A { 

    long someValue 
    long someOtherValue 
    boolean someBool = Boolean.TRUE 
    boolean someOtherBool = Boolean.TRUE 

    static mapping = { 
     someValue defaultValue: '1' 
     someOtherValue defaultValue: '1' 
    } 
} 

Funzionerà, testato in 2.2.3.

+0

Devo anche impostare colonne booleane come questa in 2.3.6 L'impostazione di defaultValue per un columnn booleano nei mapping non funziona. – Guus

+0

Quanto sopra non funziona per noi in Grails 2.5 e mysql per booleans, non dà sempre alcun valore predefinito. –

+0

Inoltre non funziona in MySQL in Grails 3.3 'defaultValue: false' o' defaultValue: "'false'" 'or' defaultValue: 'false'' – Guus

Problemi correlati