[odb-users] Native SQL Query
Mike Ruffing
mike.ruffing at ipconfigure.com
Tue Nov 19 14:49:08 EST 2013
Boris,
Thanks for the quick response.
Here is the exact query instantiation with the object type:
odb::query<server> q ("first = 'John' AND age = " + odb::query<server>::_ref (age));
I have also included the server object declaration.
#pragma db object
//! @brief Persistent class for an ESM server.
class server : public std::enable_shared_from_this<server>
{
public:
server(const std::string& name, const boost::uuids::uuid& uuid) : name_(name), uuid_(uuid) {}
~server() {}
//////////////////////////////////////////////////////////////////////////////
// Setters & getters:
//////////////////////////////////////////////////////////////////////////////
const std::string& name() const { return name_; }
void name(const std::string& name) { name_ = name; }
const boost::uuids::uuid& uuid() const { return uuid_; }
const std::vector< ::odb::lazy_weak_ptr<camera> >& cameras() const { return cameras_; }
const std::vector< ::odb::lazy_weak_ptr<storage_location> >& storage_locations() const { return storage_locations_; }
const unsigned long id() const { return server_id_; }
//////////////////////////////////////////////////////////////////////////////
// Bidirectional adders:
//////////////////////////////////////////////////////////////////////////////
void add_storage_location(std::shared_ptr<ipc::esm::storage_location>& new_storage_location);
void add_camera(std::shared_ptr<ipc::esm::camera>& new_camera);
private:
friend class ::odb::access;
server() {}
server(const server& b_server) {};
//////////////////////////////////////////////////////////////////////////////
// Data members:
//////////////////////////////////////////////////////////////////////////////
//! @brief Server ID, auto-assigned.
#pragma db id auto
unsigned long server_id_;
//! @brief Server name, i.e. "Cort's ESM server".
#pragma db not_null
std::string name_;
//!< @brief Server UUID, retained by a server identify itself in a shared database.
#pragma db not_null
boost::uuids::uuid uuid_;
//!< @brief List of active and inactive storage locations on this server.
#pragma db value_not_null inverse(server_)
std::vector< ::odb::lazy_weak_ptr<storage_location> > storage_locations_;
//!< @brief List of active and inactive cameras on this server.
#pragma db value_not_null inverse(server_)
std::vector< ::odb::lazy_weak_ptr<camera> > cameras_;
};
-----Original Message-----
From: Boris Kolpackov [mailto:boris at codesynthesis.com]
Sent: Tuesday, November 19, 2013 2:35 PM
To: Mike Ruffing
Cc: odb-users at codesynthesis.com
Subject: Re: [odb-users] Native SQL Query
Hi Mike,
Mike Ruffing <mike.ruffing at ipconfigure.com> writes:
> query q ("first = 'John' AND age = " + query::_ref (age));
>
> error C2678: binary '+' : no operator found which takes a left-hand
> operand of type 'const char [26]'
We have pretty much the same line in one of the tests and it compiles fine. What is the 'query' type? You should have something like this before the above line:
typedef odb::query<my_object> query;
Boris
More information about the odb-users
mailing list