From 53dfe7747a924776657a94d9c5dd4fad2250c3e8 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 5 May 2014 14:45:42 +0800 Subject: [PATCH] bug fixed for Conversion --- statement.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/statement.go b/statement.go index 0c2207d8..02078cb9 100644 --- a/statement.go +++ b/statement.go @@ -297,6 +297,30 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{}, } } + var val interface{} + + if fieldValue.CanAddr() { + if structConvert, ok := fieldValue.Addr().Interface().(core.Conversion); ok { + data, err := structConvert.ToDB() + if err != nil { + engine.LogError(err) + } else { + val = data + } + continue + } + } + + if structConvert, ok := fieldValue.Interface().(core.Conversion); ok { + data, err := structConvert.ToDB() + if err != nil { + engine.LogError(err) + } else { + val = data + } + continue + } + if fieldType.Kind() == reflect.Ptr { if fieldValue.IsNil() { if includeNil { @@ -314,7 +338,6 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{}, } } - var val interface{} switch fieldType.Kind() { case reflect.Bool: if allUseBool || requiredField {