视频加载失败

Gorm1.25.7 同时使用joins与preload获取列表 报错 reflect: call of reflect.Value.Field on slice Value

94 字
1 分钟
Gorm1.25.7 同时使用joins与preload获取列表 报错 reflect: call of reflect.Value.Field on slice Value
Gorm1.25.7 同时使用joins与preload获取列表 报错 reflect: call of reflect.Value.Field on slice Value

参考issues: 6834

触发错误#

当join与preload是同一个表时会触发错误,例如:

var a []A
db.where("type = 2").Joins("A").Preload("A.B").Find(&a)

触发错误:reflect: call of reflect.Value.Field on slice Value

触发原因#

源码 preload.go<124>

reflectValue := rel.Field.ReflectValueOf(db.Statement.Context, db.Statement.ReflectValue)

使用rel.Field.ReflectValueOf获取db.Statement.ReflectValue对象field,但是前面Find(&a)是一个slice类型,因此会导致映射错误

解决办法(2024-03-04)#

在go.mod 将 gorm 回滚至 1.25.6

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Gorm1.25.7 同时使用joins与preload获取列表 报错 reflect: call of reflect.Value.Field on slice Value
https://rehtt.com/posts/273/
作者
Rehtt
发布于
2024-03-04
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Rehtt
Hello, I'm Rehtt.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
150
分类
17
标签
73
总字数
67,772
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录