From 2113d5fd4c1696cdfc73feda6219673893c3f664 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 19 Jul 2013 09:06:17 +0800 Subject: [PATCH] fix bug --- session.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/session.go b/session.go index 1b6d93d8..037b8708 100644 --- a/session.go +++ b/session.go @@ -164,6 +164,9 @@ func (session *Session) scanMapIntoStruct(obj interface{}, objMap map[string][]b table := session.Engine.Tables[Type(obj)] for key, data := range objMap { + if _, ok := table.Columns[key]; !ok { + continue + } fieldName := table.Columns[key].FieldName fieldPath := strings.Split(fieldName, ".") var structField reflect.Value @@ -338,22 +341,24 @@ func (session *Session) Get(bean interface{}) (bool, error) { args = statement.RawParams } resultsSlice, err := session.Query(sql, args...) - if err != nil { return false, err } - if len(resultsSlice) == 0 { + if len(resultsSlice) < 1 { return false, nil - } else if len(resultsSlice) == 1 { - results := resultsSlice[0] - err := session.scanMapIntoStruct(bean, results) - if err != nil { - return false, err - } - } else { - return false, errors.New("More than one record") } - return true, nil + + results := resultsSlice[0] + session.Engine.AutoMap(bean) + err = session.scanMapIntoStruct(bean, results) + if err != nil { + return false, err + } + if len(resultsSlice) == 1 { + return true, nil + } else { + return true, errors.New("More than one record") + } } func (session *Session) Count(bean interface{}) (int64, error) {