diff --git a/convert/conversion.go b/convert/conversion.go index 096fcfaf..78a9fd78 100644 --- a/convert/conversion.go +++ b/convert/conversion.go @@ -325,6 +325,9 @@ func AssignValue(dv reflect.Value, src interface{}) error { if src == nil { return nil } + if v, ok := src.(*interface{}); ok { + return AssignValue(dv, *v) + } if dv.Type().Implements(scannerType) { return dv.Interface().(sql.Scanner).Scan(src) diff --git a/session_find.go b/session_find.go index bb47c689..47a3d308 100644 --- a/session_find.go +++ b/session_find.go @@ -218,8 +218,9 @@ func (session *Session) noCacheFind(table *schemas.Table, containerValue reflect if err := convert.AssignValue(keyValue, pk[0]); err != nil { return err } + } else { + keyValue.Set(reflect.ValueOf(&pk)) } - keyValue.Set(reflect.ValueOf(pk)) if isPointer { containerValue.SetMapIndex(keyValue.Elem(), newValue.Elem().Addr())