Closed aixj1984 closed 1 year ago
select_test.go:302: errors happened when select expect: SELECT FROM Users
WHERE id IN (1,2), got SELECT FROM Users
WHERE id IN ('1','2')
TestSelectByIdName : errors happened when select expect: SELECT FROM Users
WHERE id = 1 LIMIT 1, got SELECT FROM Users
WHERE id = 1 ORDER BY Users
.id
LIMIT 1
select_test.go:302: errors happened when select expect: SELECT FROM
Users
WHERE id IN (1,2), got SELECT FROMUsers
WHERE id IN ('1','2')TestSelectByIdName : errors happened when select expect: SELECT FROM
Users
WHERE id = 1 LIMIT 1, got SELECT FROMUsers
WHERE id = 1 ORDER BYUsers
.id
LIMIT 1
我这边测试没有问题呀
你把user的结构体换成我上面的,再跑测试
select_test.go:302: errors happened when select expect: SELECT FROM
Users
WHERE id IN (1,2), got SELECT FROMUsers
WHERE id IN ('1','2') TestSelectByIdName : errors happened when select expect: SELECT FROMUsers
WHERE id = 1 LIMIT 1, got SELECT FROMUsers
WHERE id = 1 ORDER BYUsers
.id
LIMIT 1这个错误跟结构体没有关系,你那边应该没有更新到最新的测试代码吧
--- FAIL: TestQueryByIdsIn (0.00s)
select_test.go:302: errors happened when select expect: SELECT FROM Users
WHERE id IN (1,2), got SELECT FROM Users
WHERE id IN ('1','2')
func TestQueryByIdsIn(t testing.T) {
values := url.Values{}
values["q"] = []string{"id?=1,2"}
query := gplus.BuildQueryUser
var expectSql = "SELECT FROM Users
WHERE id IN (1,2)"
sessionDb := checkSelectSql(t, expectSql)
gplus.SelectList[User](query, gplus.Db(sessionDb))
}
是因为gplus.BuildQuery的时候,没有把ID识别成int64,所有导致出来的是字符串,而识别到的就是int64值,问题就出在这里
--- FAIL: TestQueryByIdsIn (0.00s) select_test.go:302: errors happened when select expect: SELECT FROM
Users
WHERE id IN (1,2), got SELECT FROMUsers
WHERE id IN ('1','2')func TestQueryByIdsIn(t testing.T) { values := url.Values{} values["q"] = []string{"id?=1,2"} query := gplus.BuildQueryUser var expectSql = "SELECT FROM
Users
WHERE id IN (1,2)" sessionDb := checkSelectSql(t, expectSql) gplus.SelectList[User](query, gplus.Db(sessionDb)) }是因为gplus.BuildQuery的时候,没有把ID识别成int64,所有导致出来的是字符串,而识别到的就是int64值,问题就出在这里
哦哦,确实嵌套会有问题,主要在获取类型那块,得递归缓存好类型信息
--- FAIL: TestQueryByIdsIn (0.00s) select_test.go:302: errors happened when select expect: SELECT FROM
Users
WHERE id IN (1,2), got SELECT FROMUsers
WHERE id IN ('1','2') func TestQueryByIdsIn(t testing.T) { values := url.Values{} values["q"] = []string{"id?=1,2"} query := gplus.BuildQueryUser var expectSql = "SELECT FROMUsers
WHERE id IN (1,2)" sessionDb := checkSelectSql(t, expectSql) gplus.SelectList[User](query, gplus.Db(sessionDb)) } 是因为gplus.BuildQuery的时候,没有把ID识别成int64,所有导致出来的是字符串,而识别到的就是int64值,问题就出在这里哦哦,确实嵌套会有问题,主要在获取类型那块,得递归缓存好类型信息
问题已经解决
新特性里面增加了字段忽略和条件查询的功能,里面用到的字段反射都是基于一层结构体的,建议改为下面的模式适配测试代码
type Base struct { ID int64 CreatedAt time.Time UpdatedAt time.Time }
type User struct { Base Username string Password string Address string Age int Phone string Score int Dept string }
func (User) TableName() string { return "Users" }
具体哪里改我还没看,有改法了我再提交申请