xormplus 8 năm trước cách đây
mục cha
commit
46027412d3
3 tập tin đã thay đổi với 44 bổ sung2 xóa
  1. 14 0
      helpers.go
  2. 15 1
      session.go
  3. 15 1
      sessionplus.go

+ 14 - 0
helpers.go

@@ -180,6 +180,20 @@ func isStructZero(v reflect.Value) bool {
 	return true
 }
 
+func isArrayValueZero(v reflect.Value) bool {
+	if !v.IsValid() || v.Len() == 0 {
+		return true
+	}
+
+	for i := 0; i < v.Len(); i++ {
+		if !isZero(v.Index(i).Interface()) {
+			return false
+		}
+	}
+
+	return true
+}
+
 func int64ToIntValue(id int64, tp reflect.Type) reflect.Value {
 	var v interface{}
 	switch tp.Kind() {

+ 15 - 1
session.go

@@ -472,7 +472,21 @@ func (session *Session) row2Bean(rows *core.Rows, fields []string, fieldsCount i
 					case reflect.Uint8:
 						if fieldType.Elem().Kind() == reflect.Uint8 {
 							hasAssigned = true
-							fieldValue.Set(vv)
+							if col.SQLType.IsText() {
+								x := reflect.New(fieldType)
+								err := json.Unmarshal(vv.Bytes(), x.Interface())
+								if err != nil {
+									session.Engine.logger.Error(err)
+									return nil, err
+								}
+								fieldValue.Set(x.Elem())
+							} else {
+								for i := 0; i < fieldValue.Len(); i++ {
+									if i < vv.Len() {
+										fieldValue.Index(i).Set(vv.Index(i))
+									}
+								}
+							}
 						}
 					}
 				}

+ 15 - 1
sessionplus.go

@@ -885,7 +885,21 @@ func (session *Session) _row2BeanWithDateFormat(dateFormat string, rows *core.Ro
 					case reflect.Uint8:
 						if fieldType.Elem().Kind() == reflect.Uint8 {
 							hasAssigned = true
-							fieldValue.Set(vv)
+							if col.SQLType.IsText() {
+								x := reflect.New(fieldType)
+								err := json.Unmarshal(vv.Bytes(), x.Interface())
+								if err != nil {
+									session.Engine.logger.Error(err)
+									return nil, err
+								}
+								fieldValue.Set(x.Elem())
+							} else {
+								for i := 0; i < fieldValue.Len(); i++ {
+									if i < vv.Len() {
+										fieldValue.Index(i).Set(vv.Index(i))
+									}
+								}
+							}
 						}
 					}
 				}