insert的时候支持单主键的递归转换。
This commit is contained in:
parent
c29485f954
commit
20eef8e47d
|
@ -585,22 +585,35 @@ func (session *Session) value2Interface(col *core.Column, fieldValue reflect.Val
|
||||||
tf := session.engine.formatColTime(col, t)
|
tf := session.engine.formatColTime(col, t)
|
||||||
return tf, nil
|
return tf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if !col.SQLType.IsJson() {
|
if !col.SQLType.IsJson() {
|
||||||
// !<winxxp>! 增加支持driver.Valuer接口的结构,如sql.NullString
|
// !<winxxp>! 增加支持driver.Valuer接口的结构,如sql.NullString
|
||||||
if v, ok := fieldValue.Interface().(driver.Valuer); ok {
|
if v, ok := fieldValue.Interface().(driver.Valuer); ok {
|
||||||
return v.Value()
|
return v.Value()
|
||||||
}
|
}
|
||||||
|
var getfiled func(fv reflect.Value) (*reflect.Value, error)
|
||||||
|
getfiled = func(fv reflect.Value) (*reflect.Value, error) {
|
||||||
|
fieldTable, err := session.engine.autoMapType(fv)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if len(fieldTable.PrimaryKeys) == 1 {
|
||||||
|
|
||||||
fieldTable, err := session.engine.autoMapType(fieldValue)
|
pkField := reflect.Indirect(reflect.Indirect(fv).FieldByName(fieldTable.PKColumns()[0].FieldName))
|
||||||
|
|
||||||
|
if pkField.Kind() == reflect.Struct {
|
||||||
|
|
||||||
|
return getfiled(pkField)
|
||||||
|
}
|
||||||
|
return &pkField, nil
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("no primary key for col %v", col.Name)
|
||||||
|
}
|
||||||
|
pkField, err := getfiled(fieldValue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return 0, err
|
||||||
}
|
}
|
||||||
if len(fieldTable.PrimaryKeys) == 1 {
|
return pkField.Interface(), nil
|
||||||
pkField := reflect.Indirect(fieldValue).FieldByName(fieldTable.PKColumns()[0].FieldName)
|
|
||||||
return pkField.Interface(), nil
|
|
||||||
}
|
|
||||||
return 0, fmt.Errorf("no primary key for col %v", col.Name)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if col.SQLType.IsText() {
|
if col.SQLType.IsText() {
|
||||||
|
|
Loading…
Reference in New Issue