fix #563
This commit is contained in:
parent
a5cb21c443
commit
aae045f9aa
19
engine.go
19
engine.go
|
@ -924,6 +924,7 @@ func (engine *Engine) mapType(v reflect.Value) (*core.Table, error) {
|
|||
|
||||
k := strings.ToUpper(key)
|
||||
ctx.tagName = k
|
||||
ctx.params = []string{}
|
||||
|
||||
pStart := strings.Index(k, "(")
|
||||
if pStart == 0 {
|
||||
|
@ -1223,8 +1224,10 @@ func (engine *Engine) Sync(beans ...interface{}) error {
|
|||
}
|
||||
if !isExist {
|
||||
session := engine.NewSession()
|
||||
session.Statement.setRefValue(v)
|
||||
defer session.Close()
|
||||
if err := session.Statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
err = session.addColumn(col.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -1234,8 +1237,10 @@ func (engine *Engine) Sync(beans ...interface{}) error {
|
|||
|
||||
for name, index := range table.Indexes {
|
||||
session := engine.NewSession()
|
||||
session.Statement.setRefValue(v)
|
||||
defer session.Close()
|
||||
if err := session.Statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
if index.Type == core.UniqueType {
|
||||
//isExist, err := session.isIndexExist(table.Name, name, true)
|
||||
isExist, err := session.isIndexExist2(tableName, index.Cols, true)
|
||||
|
@ -1244,8 +1249,11 @@ func (engine *Engine) Sync(beans ...interface{}) error {
|
|||
}
|
||||
if !isExist {
|
||||
session := engine.NewSession()
|
||||
session.Statement.setRefValue(v)
|
||||
defer session.Close()
|
||||
if err := session.Statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = session.addUnique(tableName, name)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -1258,8 +1266,11 @@ func (engine *Engine) Sync(beans ...interface{}) error {
|
|||
}
|
||||
if !isExist {
|
||||
session := engine.NewSession()
|
||||
session.Statement.setRefValue(v)
|
||||
defer session.Close()
|
||||
if err := session.Statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = session.addIndex(tableName, name)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
9
rows.go
9
rows.go
|
@ -34,7 +34,10 @@ func newRows(session *Session, bean interface{}) (*Rows, error) {
|
|||
var sqlStr string
|
||||
var args []interface{}
|
||||
|
||||
rows.session.Statement.setRefValue(rValue(bean))
|
||||
if err := rows.session.Statement.setRefValue(rValue(bean)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(session.Statement.TableName()) <= 0 {
|
||||
return nil, ErrTableNotFound
|
||||
}
|
||||
|
@ -113,7 +116,9 @@ func (rows *Rows) Scan(bean interface{}) error {
|
|||
}
|
||||
|
||||
dataStruct := rValue(bean)
|
||||
rows.session.Statement.setRefValue(dataStruct)
|
||||
if err := rows.session.Statement.setRefValue(dataStruct); err != nil {
|
||||
return err
|
||||
}
|
||||
_, err := rows.session.row2Bean(rows.rows, rows.fields, len(rows.fields), bean, &dataStruct, rows.session.Statement.RefTable)
|
||||
|
||||
return err
|
||||
|
|
|
@ -83,7 +83,9 @@ func (session *Session) Delete(bean interface{}) (int64, error) {
|
|||
defer session.Close()
|
||||
}
|
||||
|
||||
session.Statement.setRefValue(rValue(bean))
|
||||
if err := session.Statement.setRefValue(rValue(bean)); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
var table = session.Statement.RefTable
|
||||
|
||||
// handle before delete processors
|
||||
|
|
|
@ -41,13 +41,17 @@ func (session *Session) Find(rowsSlicePtr interface{}, condiBean ...interface{})
|
|||
if sliceElementType.Kind() == reflect.Ptr {
|
||||
if sliceElementType.Elem().Kind() == reflect.Struct {
|
||||
pv := reflect.New(sliceElementType.Elem())
|
||||
session.Statement.setRefValue(pv.Elem())
|
||||
if err := session.Statement.setRefValue(pv.Elem()); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
tp = tpNonStruct
|
||||
}
|
||||
} else if sliceElementType.Kind() == reflect.Struct {
|
||||
pv := reflect.New(sliceElementType)
|
||||
session.Statement.setRefValue(pv.Elem())
|
||||
if err := session.Statement.setRefValue(pv.Elem()); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
tp = tpNonStruct
|
||||
}
|
||||
|
|
|
@ -26,7 +26,9 @@ func (session *Session) Get(bean interface{}) (bool, error) {
|
|||
}
|
||||
|
||||
if beanValue.Elem().Kind() == reflect.Struct {
|
||||
session.Statement.setRefValue(beanValue.Elem())
|
||||
if err := session.Statement.setRefValue(beanValue.Elem()); err != nil {
|
||||
return false, err
|
||||
}
|
||||
}
|
||||
|
||||
var sqlStr string
|
||||
|
@ -81,7 +83,9 @@ func (session *Session) nocacheGet(beanKind reflect.Kind, bean interface{}, sqlS
|
|||
return true, err
|
||||
}
|
||||
dataStruct := rValue(bean)
|
||||
session.Statement.setRefValue(dataStruct)
|
||||
if err := session.Statement.setRefValue(dataStruct); err != nil {
|
||||
return false, err
|
||||
}
|
||||
_, err = session.row2Bean(rawRows, fields, len(fields), bean, &dataStruct, session.Statement.RefTable)
|
||||
case reflect.Slice:
|
||||
err = rawRows.ScanSlice(bean)
|
||||
|
|
|
@ -67,7 +67,9 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
|
|||
return 0, errors.New("could not insert a empty slice")
|
||||
}
|
||||
|
||||
session.Statement.setRefValue(sliceValue.Index(0))
|
||||
if err := session.Statement.setRefValue(sliceValue.Index(0)); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if len(session.Statement.TableName()) <= 0 {
|
||||
return 0, ErrTableNotFound
|
||||
|
@ -297,7 +299,9 @@ func (session *Session) InsertMulti(rowsSlicePtr interface{}) (int64, error) {
|
|||
}
|
||||
|
||||
func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
||||
session.Statement.setRefValue(rValue(bean))
|
||||
if err := session.Statement.setRefValue(rValue(bean)); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if len(session.Statement.TableName()) <= 0 {
|
||||
return 0, ErrTableNotFound
|
||||
}
|
||||
|
|
|
@ -27,7 +27,9 @@ func (session *Session) Ping() error {
|
|||
// CreateTable create a table according a bean
|
||||
func (session *Session) CreateTable(bean interface{}) error {
|
||||
v := rValue(bean)
|
||||
session.Statement.setRefValue(v)
|
||||
if err := session.Statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer session.resetStatement()
|
||||
if session.IsAutoClose {
|
||||
|
@ -40,7 +42,9 @@ func (session *Session) CreateTable(bean interface{}) error {
|
|||
// CreateIndexes create indexes
|
||||
func (session *Session) CreateIndexes(bean interface{}) error {
|
||||
v := rValue(bean)
|
||||
session.Statement.setRefValue(v)
|
||||
if err := session.Statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer session.resetStatement()
|
||||
if session.IsAutoClose {
|
||||
|
@ -60,7 +64,9 @@ func (session *Session) CreateIndexes(bean interface{}) error {
|
|||
// CreateUniques create uniques
|
||||
func (session *Session) CreateUniques(bean interface{}) error {
|
||||
v := rValue(bean)
|
||||
session.Statement.setRefValue(v)
|
||||
if err := session.Statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer session.resetStatement()
|
||||
if session.IsAutoClose {
|
||||
|
@ -104,7 +110,9 @@ func (session *Session) createAll() error {
|
|||
// DropIndexes drop indexes
|
||||
func (session *Session) DropIndexes(bean interface{}) error {
|
||||
v := rValue(bean)
|
||||
session.Statement.setRefValue(v)
|
||||
if err := session.Statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer session.resetStatement()
|
||||
if session.IsAutoClose {
|
||||
|
|
|
@ -169,7 +169,9 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
|
|||
var isMap = t.Kind() == reflect.Map
|
||||
var isStruct = t.Kind() == reflect.Struct
|
||||
if isStruct {
|
||||
session.Statement.setRefValue(v)
|
||||
if err := session.Statement.setRefValue(v); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if len(session.Statement.TableName()) <= 0 {
|
||||
return 0, ErrTableNotFound
|
||||
|
|
Loading…
Reference in New Issue