diff --git a/container/NewTransactionBroker.go b/container/NewTransactionBroker.go index e76c54f..2123624 100644 --- a/container/NewTransactionBroker.go +++ b/container/NewTransactionBroker.go @@ -55,10 +55,22 @@ func (broker *NewTransactionBroker) Call(in []reflect.Value) []reflect.Value { } out := broker.caller(in) lastReturnValue := out[len(out)-1] - if lastReturnValue.Kind() == reflect.Invalid { - if err := transactionHandler.Commit(); err != nil { - // Todo Log - return []reflect.Value{reflect.ValueOf(err)} + switch lastReturnValue.Kind() { + case reflect.Invalid: + { + if err := transactionHandler.Commit(); err != nil { + // Todo Log + return []reflect.Value{reflect.ValueOf(err)} + } + } + case reflect.Interface: + { + if lastReturnValue.Type() == errorType && lastReturnValue.IsNil() { + if err := transactionHandler.Commit(); err != nil { + // Todo Log + return []reflect.Value{reflect.ValueOf(err)} + } + } } } return out