From 54473a3e45e27e9b9b93dc0db56ae061ea67d790 Mon Sep 17 00:00:00 2001 From: Wenhui Shen Date: Sun, 13 Mar 2016 16:28:18 +0800 Subject: [PATCH] fixed bug --- engine.go | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/engine.go b/engine.go index ba248cf0..18c8d656 100644 --- a/engine.go +++ b/engine.go @@ -967,23 +967,18 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table { continue } if strings.ToUpper(tags[0]) == "EXTENDS" { - if fieldValue.Kind() == reflect.Struct { - parentTable := engine.mapType(fieldValue) - for _, col := range parentTable.Columns() { - col.FieldName = fmt.Sprintf("%v.%v", t.Field(i).Name, col.FieldName) - table.AddColumn(col) - } - - continue - } else if fieldValue.Kind() == reflect.Ptr { + switch fieldValue.Kind() { + case reflect.Ptr: f := fieldValue.Type().Elem() if f.Kind() == reflect.Struct { + fieldPtr := fieldValue fieldValue = fieldValue.Elem() - if !fieldValue.IsValid() || fieldValue.IsNil() { + if !fieldValue.IsValid() || fieldPtr.IsNil() { fieldValue = reflect.New(f).Elem() } } - + fallthrough + case reflect.Struct: parentTable := engine.mapType(fieldValue) for _, col := range parentTable.Columns() { col.FieldName = fmt.Sprintf("%v.%v", t.Field(i).Name, col.FieldName) @@ -991,8 +986,9 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table { } continue + default: + //TODO: warning } - //TODO: warning } indexNames := make(map[string]int)