cuigh / auxo

A full-stack framework for building applications in Go
MIT License
11 stars 8 forks source link

在jsd如何支持字段为type类型 #7

Open carolove opened 6 years ago

carolove commented 6 years ago

eg:

type ReportStatus int

type DotCrawlInfo struct {
    ReportStatus     entity.ReportStatus `jsd:"report_status"`
    WebsiteStatus    entity.ReportStatus `jsd:"website_status"`
}

在jsd中反射出来的时候提示错误

infos = []*model.DotCrawlInfo{}
db := gsd.MustOpen(_TABLE_SQL_SITE_RECORD)
err = db.Select( _ColReportStatus, _ColWebsiteStatus).From(_Table).
    Where(filter).
    Page(PI.PageIndex, PI.PageSize).Fill(&infos)
if err != nil {
    fmt.Println("Error:", err.Error())
}
return

提示类型无法反射无法从tinyiint(4) -> type ReportStatus int

这种如何解决~~

cuigh commented 6 years ago

基于性能考虑,gsd 在反射这一块做了极大的优化,所以目前并没有实现自动类型转换。但最新版已经添加对基础类型的自定义类型的兼容,只要底层类型是一致的,就没有问题,如数据库类型是 int32,自定义类型也是基于 int32 的,就可以兼容,但如果自定义类型是基于 int64 的就不能兼容了

carolove commented 6 years ago

okok明白了,我原来是type 定义的类型系统用的是int 而jsd定义的确实int32,导致不兼容,我试试

2018-03-22 13:29 GMT+08:00 cuigh notifications@github.com:

基于性能考虑,gsd 在反射这一块做了极大的优化,所以目前并没有实现自动类型转换。但最新版已经添加对基础类型的自定义类型的兼容,只要底层类型是一致的,就没有问题,如数据库类型是 int32,自定义类型也是基于 int32 的,就可以兼容,但如果自定义类型是基于 int64 的就不能兼容了

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/cuigh/auxo/issues/7#issuecomment-375184703, or mute the thread https://github.com/notifications/unsubscribe-auth/AAy7ox6DKDVaR1oKKs9JqF2WTAQYJi6Bks5tgzaqgaJpZM4Szb3E .