2012-05-08 64 views
4

如何將類型爲enum的mysql字段映射到grails域類?Grails:將類型爲enum的mysql字段映射到域類

我在grails v.2.0.3中使用了現有的(legacy)mySQL數據庫。我得到了錯誤的列類型的錯誤:

failed; nested exception is org.hibernate.HibernateException: Wrong column type in 
facilities.ost_fac_syslog for column log_type. Found: enum, expected: varchar(255) 

的SQL字段被定義爲:

mysql> describe ost_fac_syslog; 
+------------+---------------------------------+------+-----+-------------------- 
| Field  | Type       | Null | Key | Default  
+------------+---------------------------------+------+-----+----------------------+ 
| log_id  | int(11) unsigned    | NO | PRI | NULL auto_increment | 
| log_type | enum('Debug','Warning','Error') | NO | MUL | NULL |    | 

我的領域類是:

class OstFacSyslog { 
    static mapping = { 
     table 'ost_fac_syslog' 
     version false 
     id column: 'log_id', name:'logId' 
     logType column: 'log_type', type: 'enum', name: 'logType' 
    } 

    Integer logId 
    LogType logType 

    enum LogType { 
     Debug('Debug'), Warning('Warning'), Error('Error') 
      private final String toString 
     LogType(String toString) {this.toString = toString} 
     String getName() {name()} 
     String toString() {toString} 
    } 
} 

謝謝,我感謝所有幫助。

回答

6

您需要指定列的sqlType而不是(Java)type

static mapping = { 
    ... 
    logType column: 'log_type', type: 'enum', name: 'logType' 
} 

要:從改變你的映射

static mapping = { 
    ... 
    logType column: 'log_type', sqlType: 'enum', name: 'logType' 
} 
+0

沒有看到這個文件上。一直試圖找出超過3小時。謝謝! – ibaralf

相關問題