public function add(Identifiable $object)
 {
     return $this->inject(OSQL::insert(), $object->setId(DBPool::getByDao($this)->obtainSequence($this->getSequence())));
 }
 protected function doInject(InsertOrUpdateQuery $query, Identifiable $object)
 {
     $db = DBPool::getByDao($this);
     if (!$db->isQueueActive()) {
         $preUncacher = is_scalar($object->getId()) ? $this->getUncacherById($object->getId()) : null;
         $count = $db->queryCount($query);
         $uncacher = $this->getUncacherById($object->getId());
         if ($preUncacher) {
             $uncacher->merge($uncacher);
         }
         $uncacher->uncache();
         if ($count !== 1) {
             throw new WrongStateException($count . ' rows affected: racy or insane inject happened: ' . $query->toDialectString($db->getDialect()));
         }
     } else {
         $preUncacher = is_scalar($object->getId()) ? $this->getUncacherById($object->getId()) : null;
         $db->queryNull($query);
         $uncacher = $this->getUncacherById($object->getId());
         if ($preUncacher) {
             $uncacher->merge($uncacher);
         }
         $uncacher->uncache();
     }
     // clean out Identifier, if any
     return $this->addObjectToMap($object->setId($object->getId()));
 }