diff --git a/orm/orm_queryset.go b/orm/orm_queryset.go index f1aa45c8..575f62ae 100644 --- a/orm/orm_queryset.go +++ b/orm/orm_queryset.go @@ -200,6 +200,10 @@ func (o *querySet) One(container interface{}, cols ...string) error { if num == 0 { return ErrNoRows } + + if num > 1 { + return ErrMultiRows + } return nil } diff --git a/orm/orm_test.go b/orm/orm_test.go index ff7d2eae..d9fd7d51 100644 --- a/orm/orm_test.go +++ b/orm/orm_test.go @@ -975,11 +975,13 @@ func TestOne(t *testing.T) { err = qs.OrderBy("Id").Limit(1).One(&user) throwFailNow(t, err) throwFail(t, AssertIs(user.UserName, "slene")) + throwFail(t, AssertNot(err, ErrMultiRows)) user = User{} err = qs.OrderBy("-Id").Limit(100).One(&user) throwFailNow(t, err) throwFail(t, AssertIs(user.UserName, "nobody")) + throwFail(t, AssertNot(err, ErrMultiRows)) err = qs.Filter("user_name", "nothing").One(&user) throwFail(t, AssertIs(err, ErrNoRows))