SeaORM关联查询报错:SQL正常却提示未找到A_barcode列
问题原因及解决方案
核心问题:Partial Model的实体关联配置错误
你定义Partial Model时,#[sea_orm(entity = "Entity")]中的"Entity"是未替换的占位符,没有指定对应实际实体(MvB或MvA的实体类型),导致SeaORM解析Partial Model与关联查询结果的映射时,错误推断字段关联规则,误以为MvASearchModel需要包含barcode字段(自动添加关联实体前缀A_后变成A_barcode),但该字段既不在你的SQL查询结果里,也没在Partial Model中定义。
修复步骤
修改两个Partial Model的#[sea_orm(entity = "...")]属性,替换为对应实体的实际路径:
修正MvBSearchModel
#[derive(Debug, FromQueryResult, DerivePartialModel)] #[sea_orm(entity = "crate::entities::mv_b::Entity")] // 替换为你的MvB实体实际路径 pub struct MvBSearchModel { pub barcode: String, pub lbl_type: String, }
修正MvASearchModel
#[derive(Debug, FromQueryResult, DerivePartialModel)] #[sea_orm(entity = "crate::entities::mv_a::Entity")] // 替换为你的MvA实体实际路径 pub struct MvASearchModel { pub prod_art_id: i32, pub prod_art_pub_uuid: Uuid, pub lbl_status: String, }
补充说明
SeaORM的DerivePartialModel依赖entity属性关联对应数据库实体,以此正确映射查询结果的字段名(包括关联查询时的表前缀)。用占位符"Entity"会导致框架无法识别实体对应的表和字段规则,进而出现字段名推断错误,触发找不到A_barcode的报错。
内容的提问来源于stack exchange,提问作者Nkk
相关产品推荐
相关产品推荐

