From fcb1a470370c9839f9ee7791cb2def351ad5d8b8 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 9 Jun 2021 10:15:42 +0800 Subject: [PATCH] Support Get time.Time --- integrations/session_get_test.go | 22 ++++++++++++++++++++++ session_get.go | 3 ++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/integrations/session_get_test.go b/integrations/session_get_test.go index 99db98fc..595f58ae 100644 --- a/integrations/session_get_test.go +++ b/integrations/session_get_test.go @@ -766,3 +766,25 @@ func TestGetNil(t *testing.T) { assert.True(t, errors.Is(err, xorm.ErrObjectIsNil)) assert.False(t, has) } + +func TestGetTime(t *testing.T) { + type GetTimeStruct struct { + Id int64 + CreateTime time.Time + } + + assert.NoError(t, PrepareEngine()) + assertSync(t, new(GetTimeStruct)) + + var gts = GetTimeStruct{ + CreateTime: time.Now(), + } + _, err := testEngine.Insert(>s) + assert.NoError(t, err) + + var gn time.Time + has, err := testEngine.Table("get_time_struct").Cols(colMapper.Obj2Table("CreateTime")).Get(&gn) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, gts.CreateTime.Format(time.RFC3339), gn.Format(time.RFC3339)) +} diff --git a/session_get.go b/session_get.go index cb2bda75..473490a0 100644 --- a/session_get.go +++ b/session_get.go @@ -50,7 +50,8 @@ func (session *Session) get(bean interface{}) (bool, error) { return false, ErrObjectIsNil } - if beanValue.Elem().Kind() == reflect.Struct { + _, isTimeStruct := bean.(*time.Time) + if beanValue.Elem().Kind() == reflect.Struct && !isTimeStruct { if err := session.statement.SetRefBean(bean); err != nil { return false, err }