public function existsBy($predicate, $combination = Predicate\PredicateSet::OP_AND)
    {
        try {
            $select = $this->select()->where($predicate, $combination)
                    ->columns(['count' => new Expression('count(*)')]);
            $result = $select->execute()
                             ->toArray();
        } catch (\Exception $e) {
            throw new Exception\InvalidArgumentException(__METHOD__ . ": invaid usage ({$e->getMessage()})");
        }

        return ($result[0]['count'] > 0);
    }