public function selectById($id, Query $query = null, $join = 'all')
        {
            if (!$this->hasCachedB2DBObject($id)) {
                $row = $this->rawSelectById($id, $query, $join);
                $object = $this->populateFromRow($row);
            } else {
                $object = $this->getB2DBCachedObject($id);
            }
            return $object;
        }