diff --git a/mapping.go b/mapping.go index 6d2d32b..0ec0796 100644 --- a/mapping.go +++ b/mapping.go @@ -65,7 +65,7 @@ func (b *Mapper) extractStructData(data ...any) (map[string][]*TableRowMateria, } if tableName == "" { - return nil, fmt.Errorf("not import TableName() string func for struct type: %s", uniqueTypeName) + return nil, fmt.Errorf("not func TableName() string func for struct type: %s", uniqueTypeName) } } diff --git a/mapping_test.go b/mapping_test.go index 4e75f70..1ecefde 100644 --- a/mapping_test.go +++ b/mapping_test.go @@ -58,7 +58,7 @@ func TestBuilderInsert(t *testing.T) { Ts: time.Now(), LoadUnitId: "负载单体ID", PInt: &p, NullInt32: sql.NullInt32{Int32: 32, Valid: true}, }, &TaosUser{ - TaosTAG: &TaosTAG{DevId: "User001", DevType: "User类型", DataType: "User数据类型001"}, + TaosTAG: &TaosTAG{DevId: "User001", DevType: "User类型", DataType: "User数据类型001", Alias: "三儿"}, Ts: time.Now(), Name: "张三", }, &TaosUser{ TaosTAG: &TaosTAG{DevId: "User002", DevType: "User类型", DataType: "User数据类型002"}, diff --git a/scan.go b/scan.go index eb93511..d394d3d 100644 --- a/scan.go +++ b/scan.go @@ -81,7 +81,11 @@ func scan(data interface{}) (*StructMate, error) { continue } - sr.Field2IndexCache[field.Name] = append(sr.Field2IndexCache[field.Name], i) + if len(sr.Field2IndexCache[field.Name]) > 0 { + return nil, fmt.Errorf("duplicate field [%s %s `db:%s`]", field.Name, field.Type.Name(), columnName) + } + + sr.Field2IndexCache[field.Name] = append([]int{}, i) sr.DBName2IndexCache[columnName] = append(sr.DBName2IndexCache[columnName], i) sr.Filed2DBNameCache[field.Name] = columnName