2014-07-22 4 views
0

나는 도메인 클래스는 위의 도메인에 QuestionTypeSurvey 내가이 분야에 대한 별도의 테이블을 원하지 않기 때문에 내가 SRC/끝내 내부에 정의한 열거 클래스입니다 지금열거 형 필드를 varchar 대신 tinyint로 만드는 방법은 무엇입니까?

class QuestionSurvey { 

    String questionText 
    QuestionTypeSurvey questionType 

    static hasMany = [options: QuestionOptionSurvey] 

    static constraints = {} 
} 

로 정의합니다. QuestionTypeSurvey는 다음과 같이 정의된다 : 나는 응용 프로그램을 실행하고 테이블 구조를 볼 때

이제
enum QuestionTypeSurvey { 

     TEXT_FIELD, 
     TEXT_AREA, 
     RADIO_BUTTON, 
     DROPDOWN_BOX, 
     CHECK_BOX 
} 

, 나는 QuestionSurvey 테이블의 questionType 필드가 가리키는 때문에 내가 기대했던 작은 INT가 아닌 것으로 나타났습니다 열거 형이지만 VARCHAR입니다. 나는 당황했다. 어쨌든 유형이 문자열이 아닌 열거 형을 사용하는 전체 지점 이었기 때문에 varchar 대신 tinyint로 만들 수 있습니까? 도와 주셔서 감사합니다!

답변

2

도메인 클래스에 매핑 구성을 추가하여 enum이 int로 저장되도록 할 수 있습니다. 나는 그것이 작은 것 인 것을 강요하는 방법을 모릅니다. 그러나 적어도 그것은 varchar가 아닙니다.

static mapping = { 
    questionType enumType: 'ordinal' 
} 

Grails의 문서 : 필요한 경우 http://www.grails.org/doc/latest/ref/Database%20Mapping/column.html

당신은 또한 열거 클래스에 id 필드를 추가하고 값을 정의 할 수 있습니다이 저장된다. http://blog.tamashumi.com/2013/06/grails-enum-custom-database-value.html