2013-05-12 8 views
6

W mojej klasie domeny Grails chcę ustawić wartości domyślne, które pozostają w bazie danych. Używam mysql jako bazy danych. Próbowałem to zrobić:Jak ustawić wartość domyślną dla wartości klasy domeny w Grails 2.2?

class A { 

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

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

Ale nic nie działa. W bazie danych nie ma ustawionych wartości domyślnych. Co muszę zmienić, aby moje wartości domyślne były poprawnie ustawione?

Odpowiedz

6

Jeśli jesteś na Grails 2.2 powyżej, możesz użyć wartości defaultValue. Spójrz na odpowiedź Burta here Spróbuj, mam nadzieję, że to pomaga:

Class A { 
     Long someValue 
     Long someOtherValue 

     Boolean someBool 
     Boolean someOtherBool 

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

} 
+0

to jest to, co napisałem jako pytanie. Używam Grails 2.2.2, ale to nie działa. – confile

+1

Działa to w 2.3.6 dla wszystkich typów, ale nie dla 'Boolean'. Próbowałem 'defaultValue: 'true'' i' defaultValue: true'. Ale w tabeli jest wypełniona 'null'. Muszę użyć 'Boolean mycolumn = Boolean.TRUE' – Guus

+0

jaka jest twoja baza danych? – Alidad

2

Okazało się, że dla defaultValue do pracy z właściwościami Smyczkowych, musiałem umieścić w cudzysłowie apostrofami i defaultValue pracować dla właściwości numerycznych, ja potrzebne do umieszczenia podwójnych kwotowań wokół numeru lub wartości domyślne nie pojawią się w DDL. Na przykład:

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

Ponadto, o ile mogę powiedzieć, wartości domyślne nie działają dla właściwości, które są wyliczeniami.

+0

Niestety, to nie działa dla zmiennych logicznych (które są polami BIT o długości 1). –

2
class A { 

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

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

To zadziała, testowane w 2.2.3.

+0

Muszę również ustawić kolumny typu Boolean w ten sposób w 2.3.6 Ustawienie defaultValue dla boolean columnn w mapowaniach nie działa. – Guus

+0

Powyższe nie działa dla nas w Grails 2.5 i mysql dla booleans, zawsze nie daje domyślnych. –

+0

Również nie działa w MySQL w Grails 3.3 'defaultValue: false' lub' defaultValue: "'false'" 'lub' defaultValue: 'false'' – Guus

Powiązane problemy