From 7fc1fe65249ae90556ca59685c18904b8e93491f Mon Sep 17 00:00:00 2001 From: shanyy Date: Mon, 16 Apr 2018 15:08:28 +0800 Subject: [PATCH] Judge both type of struct and pointer in case of out-of-range --- session_find.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/session_find.go b/session_find.go index b5fd0cd3..226be5bc 100644 --- a/session_find.go +++ b/session_find.go @@ -398,11 +398,12 @@ func (session *Session) cacheFind(t reflect.Type, sqlStr string, rowsSlicePtr in bean := cacher.GetBean(tableName, sid) // fix issue #894 - ckt := t - if ckt.Kind() == reflect.Ptr { - ckt = t.Elem() + ckb := reflect.ValueOf(bean).Elem().Type() + ht := ckb == t + if !ht && t.Kind() == reflect.Ptr { + ht = t.Elem() == ckb } - if bean == nil || reflect.ValueOf(bean).Elem().Type() != ckt { + if bean == nil || !ht { ides = append(ides, id) ididxes[sid] = idx } else {