grails 도메인 클래스에서 어떻게 디폴트 값을 설정할 수 있습니까?


Answers

이전 답변을 토대로 Grails 2.2에서 defaultValue 속성을 사용할 수 있지만, DDL에 기본값이 올바르게 나타나도록 문자열 속성과 이중 속성을 이중 속성으로 둘러싼 값을 이중 따옴표와 작은 따옴표로 묶어야합니다 . 예를 들어, 다음을 사용해야합니다.

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

작은 따옴표 만 사용하면 "Column"CASH "not found"와 같은 오류가 발생합니다. 또한 알 수 있듯이 기본값은 열거 형 속성에서 작동하지 않습니다.

Question

도메인 클래스 속성에 기본값을 설정하는 방법이 있습니까? 나는 PayMethod라는 클래스를 가지고 있는데, 여기서 'name'속성이 'cash'로 기본 설정되기를 원합니다. 이 테이블을 만들 때이 기본값을 원한다. 제약 조건을 사용하여이 가능합니까?

package abc

import util.UserUtil
import embed.AuditUser

class PayMethod {

    String name = "Cash"

    AuditUser audit = new AuditUser()
    static embedded = ['audit']    

    static constraints = {
        name blank: false, size: 5..30, unique: true
    }

    static mapping = {
        table 't01i0010'
        id column: 'F_ID', precision: 4, scale: 0
        name column: 'F_NAME', length: 30, defaultValue: 'Cash'
        version column: 'F_REVISION'
    }

    def authUserService
    int insertIndex = 0
    int updateIndex = 0
    static transients = ['authUserService', 'insertIndex', 'updateIndex']    

    def beforeInsert = {
        audit.entryUser = UserUtil.user()
        audit.entryDate = new Date();
    }

    def beforeUpdate = {
        audit.reviseUser = UserUtil.user()
        audit.reviseDate = new Date();
    }

    def afterInsert = {
        if(insertIndex == 0){
            def user = audit.entryUser
            def date = audit.entryDate
            log.info "POST INSERT => ENTERER: ${user} ENTERED: ${date}"
        }
        insertIndex++
    }

    def afterUpdate = {
        if(updateIndex == 0){
            def user = audit.reviseUser
            def date = audit.reviseDate
            log.info "POST UPDATE => REVISE: ${user} REVISED: ${date}"
        }
        updateIndex++
    }
}



Links



Tags

grails