浏览代码

fix get customize type bug

Unknown 6 年之前
父节点
当前提交
13b3df64ae
共有 2 个文件被更改,包括 35 次插入1 次删除
  1. 1 1
      session_get.go
  2. 34 0
      session_get_test.go

+ 1 - 1
session_get.go

@@ -284,7 +284,7 @@ func (session *Session) nocacheGet(beanKind reflect.Kind, table *core.Table, bea
 		err = rows.ScanMap(bean)
 	case reflect.String, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
 		reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
-		err = rows.Scan(&bean)
+		err = rows.Scan(bean)
 	default:
 		err = rows.Scan(bean)
 	}

+ 34 - 0
session_get_test.go

@@ -584,3 +584,37 @@ func TestGetNullVar(t *testing.T) {
 	assert.True(t, has)
 	assert.EqualValues(t, 0, age10)
 }
+
+func TestCustomTypes(t *testing.T) {
+	type MyInt int
+	type MyString string
+
+	type TestCustomizeStruct struct {
+		Id   int64
+		Name MyString
+		Age  MyInt
+	}
+
+	assert.NoError(t, prepareEngine())
+	assertSync(t, new(TestCustomizeStruct))
+
+	var s = TestCustomizeStruct{
+		Name: "test",
+		Age:  32,
+	}
+	_, err := testEngine.Insert(&s)
+	assert.NoError(t, err)
+	assert.EqualValues(t, 1, s.Id)
+
+	var name MyString
+	has, err := testEngine.Table(new(TestCustomizeStruct)).ID(s.Id).Cols("name").Get(&name)
+	assert.NoError(t, err)
+	assert.True(t, has)
+	assert.EqualValues(t, "test", name)
+
+	var age MyInt
+	has, err = testEngine.Table(new(TestCustomizeStruct)).ID(s.Id).Select("age").Get(&age)
+	assert.NoError(t, err)
+	assert.True(t, has)
+	assert.EqualValues(t, 32, age)
+}