[odb-users] How to change name of relationship table?
Boris Kolpackov
boris at codesynthesis.com
Tue Feb 19 02:24:12 EST 2013
Hi Andrei,
Андрей Иванов <andrei.i.ivanov at commandus.com> writes:
> #pragma db object table("dbo.user_addr")
> class useraddress {
> public:
> #pragma db id
> int id_addr_;
> };
>
> typedef std::vector<shared_ptr<useraddress>> useraddress_ptrs;
>
> #pragma db object table("dbo.webusers")
> class webuser {
> ...
So far so good.
> useraddress_ptrs addresses_;
> #pragma db object(useraddress) table("dbo.user_addr")
This pragma is not necessary; you have already assigned the table
name to the useraddress persistent object.
> #pragma db value(useraddress_ptrs) value_not_null unordered
> id_column("webuser_id") value_column("id_addr") table("dbo.user_addr")
You cannot assign table name to a container value type, only to a
container member (each member gets its own table). I would rewrite
the webuser class like this (i.e., apply the pragma to the member,
not the type):
#pragma db object table("dbo.webusers")
class webuser {
...
#pragma db value_not_null unordered \
id_column("webuser_id") value_column("id_addr") \
table("dbo.user_addr")
useraddress_ptrs addresses_;
};
Boris
More information about the odb-users
mailing list