【发布时间】:2015-07-23 12:15:13
【问题描述】:
我的数据库中有一个表,其列名都以大写字母开头(即:FMR_Number、Primary_Value)。列名是我无法控制的。数据库中的所有其他列(在其他表中)都是小写的。我已经将一个结构映射到表,但我不断从查询中得到一个丢失的目标错误。我相信这是因为名称映射器设置为 ToLower(这是它在其他任何地方都需要的)。我尝试使用这种格式
StructField string 'db:"RealColumnName"'
明确指定映射,但我得到一个非法的符文文字。当我去查看其他人代码中的示例时,我发现它以我刚刚尝试过的方式表示。如果我将 ' 和 " 反转为
StructField string "db:'RealColumnName'"
我没有收到非法符文文字错误,但确实收到了丢失的目的地错误。我在这里做错了什么?我正在使用 sqlx。
我的结构
type pah struct {
FMR_Fund_Number string 'db:"FMR_Fund_Number"'
Business_Data_Date string 'db:"Business_Data_Date"'
Outbound_Composition_Code string 'db:"Outbound_Composition_Code"'
Composition_Sub_Code string 'db:"Composition_Sub_Code"'
Composition_Sub_Code_Description string 'db:"Composition_Sub_Code_Description"'
Position_Name string 'db:"Position_Name"'
Primary_Value float64 'db:"Primary_Value"'
Record_Order int 'db:"Record_Order"'
Tier_Indicator string 'db:"Tier_Indicator"'
}
我的数据库调用
func loadAssetAllocation() AssetAllocations {
pahGroup := []pah{}
pahQuery := "SELECT FMR_Fund_Number,Business_Data_Date,Outbound_Composition_Code,Composition_Sub_Code,Composition_Sub_Code_Description,Primary_Value,Tier_Indicator,Record_Order FROM PAH WHERE FMR_Fund_Number = \"312\" AND Outbound_Composition_Code = \"MDCAT\" AND Business_Data_Date = (SELECT Business_Data_Date FROM PAH ORDER BY Business_Data_Date DESC LIMIT 1) AND Composition_Sub_Code <> \"TAXADV\" ORDER BY Record_Order ASC"
assetAlloc := AssetAllocations{}
err := ffDB.Select(&pahGroup, pahQuery)
fmt.Println("pahQuery AssetAllocation error: ", err)
assetAlloc.AssetAll = pahGroup
return assetAlloc
}
【问题讨论】: