2013-05-12 29 views
6

Trong lớp miền Grails của tôi, tôi muốn đặt các giá trị mặc định tồn tại trong cơ sở dữ liệu. Tôi sử dụng mysql làm cơ sở dữ liệu. Tôi đã cố gắng thực hiện điều này:Làm cách nào để đặt giá trị mặc định cho Giá trị lớp miền trong Grails 2.2?

class A { 

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

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

Nhưng không có gì hiệu quả. Không có giá trị mặc định nào được đặt trong cơ sở dữ liệu. Tôi phải thay đổi gì để có được các giá trị mặc định của mình được đặt chính xác?

Trả lời

6

Nếu bạn đang sử dụng Grails 2.2 ở trên thì bạn có thể sử dụng defaultValue. Nhìn vào câu trả lời Burt của here Hãy thử nó, hy vọng điều này sẽ giúp:

Class A { 
     Long someValue 
     Long someOtherValue 

     Boolean someBool 
     Boolean someOtherBool 

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

} 
+0

đây là những gì tôi đã viết làm câu hỏi. Tôi sử dụng Grails 2.2.2 nhưng nó không hoạt động. – confile

+1

Tính năng này hoạt động trong 2.3.6 cho tất cả các loại chứ không phải cho 'Boolean'. Tôi đã thử 'defaultValue: 'true'' và' defaultValue: true'. Nhưng trong bảng được lấp đầy với 'null'. Tôi phải sử dụng 'Boolean mycolumn = Boolean.TRUE' – Guus

+0

cơ sở dữ liệu của bạn là gì? – Alidad

2

tôi thấy rằng cho defaultValue để làm việc với các thuộc tính String, tôi cần phải đặt dấu ngoặc kép quanh dấu nháy đơn và cho defaultValue làm việc đối với tài sản số, tôi cần thiết để đặt dấu ngoặc kép xung quanh số hoặc các giá trị mặc định sẽ không xuất hiện trong DDL. Vì vậy, ví dụ:

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

Ngoài ra, như tôi có thể nói, giá trị mặc định không hoạt động đối với các thuộc tính là enums.

+0

Đáng buồn thay, điều này không làm việc cho các toán tử (là các trường BIT có độ dài là 1). –

2
class A { 

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

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

Điều này sẽ hoạt động, được kiểm tra trong 2.2.3.

+0

Tôi cũng phải đặt các cột boolean như thế này trong 2.3.6 Đặt defaultValue cho một cột boolean trong ánh xạ không hoạt động. – Guus

+0

Ở trên không làm việc cho chúng tôi trong grails 2.5 và mysql cho booleans, luôn luôn không cho mặc định. –

+0

Cũng không hoạt động trong MySQL trong Grails 3.3 'defaultValue: false' hoặc' defaultValue: "'false'" 'hoặc' defaultValue: 'false'' – Guus

Các vấn đề liên quan