Support Get time.Time #1933
|
@ -82,7 +82,12 @@ func newEngine(driverName, dataSourceName string, dialect dialects.Dialect, db *
|
|||
dataSourceName: dataSourceName,
|
||||
db: db,
|
||||
logSessionID: false,
|
||||
DatabaseTZ: time.Local,
|
||||
}
|
||||
|
||||
if dialect.URI().DBType == schemas.SQLITE {
|
||||
engine.DatabaseTZ = time.UTC
|
||||
} else {
|
||||
engine.DatabaseTZ = time.Local
|
||||
}
|
||||
|
||||
logger := log.NewSimpleLogger(os.Stdout)
|
||||
|
|
|
@ -35,6 +35,19 @@ func (session *Session) Get(bean interface{}) (bool, error) {
|
|||
return session.get(bean)
|
||||
}
|
||||
|
||||
func isPtrOfTime(v interface{}) bool {
|
||||
if _, ok := v.(*time.Time); ok {
|
||||
return true
|
||||
}
|
||||
|
||||
el := reflect.ValueOf(v).Elem()
|
||||
if el.Kind() != reflect.Struct {
|
||||
return false
|
||||
}
|
||||
|
||||
return el.Type().ConvertibleTo(schemas.TimeType)
|
||||
}
|
||||
|
||||
func (session *Session) get(bean interface{}) (bool, error) {
|
||||
defer session.resetStatement()
|
||||
|
||||
|
@ -51,8 +64,7 @@ func (session *Session) get(bean interface{}) (bool, error) {
|
|||
return false, ErrObjectIsNil
|
||||
}
|
||||
|
||||
_, isTimeStruct := bean.(*time.Time)
|
||||
if beanValue.Elem().Kind() == reflect.Struct && !isTimeStruct {
|
||||
if beanValue.Elem().Kind() == reflect.Struct && !isPtrOfTime(bean) {
|
||||
if err := session.statement.SetRefBean(bean); err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user