Don't access scanner's fields if already defined data type

This commit is contained in:
Jinzhu 2018-02-18 09:00:03 +08:00
parent 55945afb34
commit 58e34726df

View File

@ -94,14 +94,16 @@ var ParseFieldStructForDialect = func(field *StructField, dialect Dialect) (fiel
} }
// Get scanner's real value // Get scanner's real value
var getScannerValue func(reflect.Value) if dataType == "" {
getScannerValue = func(value reflect.Value) { var getScannerValue func(reflect.Value)
fieldValue = value getScannerValue = func(value reflect.Value) {
if _, isScanner := reflect.New(fieldValue.Type()).Interface().(sql.Scanner); isScanner && fieldValue.Kind() == reflect.Struct { fieldValue = value
getScannerValue(fieldValue.Field(0)) if _, isScanner := reflect.New(fieldValue.Type()).Interface().(sql.Scanner); isScanner && fieldValue.Kind() == reflect.Struct {
getScannerValue(fieldValue.Field(0))
}
} }
getScannerValue(fieldValue)
} }
getScannerValue(fieldValue)
// Default Size // Default Size
if num, ok := field.TagSettings["SIZE"]; ok { if num, ok := field.TagSettings["SIZE"]; ok {