我正在使用Gorp进行数据库访问,Gorp 有一个标准DbMap类型,以及一个Transaction用于何时能够回滚的类型。这两种类型都实现了SqlExecutor接口。


因此SqlExecutor,我针对接口进行编程,因此我可以根据需要使用事务而无需更改我的代码。


然后我初始化一个 Gorp DbMaporTransaction并将其作为字段属性传入。问题是我需要一个指向 Gorp“对象”的指针,否则如果我使用 aTransaction如果 Gorp“对象”通过值而不是引用传递,我将如何能够回滚。


然后我收到一条消息,例如


r.Gorp.Get undefined (type *gorp.SqlExecutor has no field or method Get)

当我尝试使用我的代码时。我如何调用这些方法?


代码示例如下。


package repositories


import (

    "github.com/coopernurse/gorp"

)



type Repository struct {

    Gorp *gorp.SqlExecutor // <<<< Need pointer so I can rollback

}


func (r *Repository) GetById(i interface{}, key interface{}) interface{} {

    obj, err := r.Gorp.Get(i, key)

    if err != nil {

        panic(err)

    }

    return obj

}