[odb-users] Same obect in multiple schemas with different table
names
Boris Kolpackov
boris at codesynthesis.com
Sun Jan 17 04:06:08 EST 2016
Hi Robert,
Seymour, Robert <Robert.Seymour at arris.com> writes:
> Is it possible to have the same class in multiple schemas (-schema-name)
> that have different table names for sqlite?
No, each persistent C++ class in ODB gets a single set of SQL statements
and they have the table name hard-wired in them.
If you really have to have this, one way to do it would be via templates,
something along these lines:
template <typename>
class object
{
...
};
struct schema1_tag {};
struct schema2_tag {};
using schema1_object = object<schema1_tag>;
using schema2_object = object<schema2_tag>;
#pragma db object(schema1_object) table("name1")
#pragma db object(schema2_object) table("name2")
The biggest issue with this approach is that if you have common code that
must work with "both" objects, you will have to templatize it, for example:
template <typename T>
void
print (const object<T>& o)
{
...
}
But if all you want is to avoid duplicating the classes, then this approach
could work.
Boris
More information about the odb-users
mailing list