diff --git a/session_convert.go b/session_convert.go index 7f11354d..9009fadd 100644 --- a/session_convert.go +++ b/session_convert.go @@ -558,7 +558,10 @@ func (session *Session) value2Interface(col *core.Column, fieldValue reflect.Val if col.SQLType.IsBlob() { return data, nil } - return string(data), nil + if len(data) > 0 { + return string(data), nil + } + return nil, nil } fieldType := fieldValue.Type() diff --git a/statement.go b/statement.go index ea3ecabe..454accb7 100644 --- a/statement.go +++ b/statement.go @@ -330,6 +330,11 @@ func (statement *Statement) buildUpdates(bean interface{}, if err != nil { engine.logger.Error(err) } else { + if fieldType.Kind() == reflect.Ptr && len(data) == 0 { + args = append(args, nil) + colNames = append(colNames, fmt.Sprintf("%v=?", engine.Quote(col.Name))) + continue + } val = data } goto APPEND