[odb-users] Usage of lazy shared pointers in a triangle relation

Boris Kolpackov boris at codesynthesis.com
Thu Oct 23 01:34:14 EDT 2014

Hi Quentin,

Quentin Deldycke <quentindeldycke at gmail.com> writes:

> I have a problem using this kind of architecture:
> - class A have a lazy_shared_pointer to C
> - class B have a lazy_shared_pointer to another C
> - class C contains a int
> In my mysql database, we can easily see that our class A
> is linked to a class C with value '1' and my class 'B' is linked
> to a class C with value '2'.
> In my code, I query all class A, for each A, we query for objects B.
> For each B I print values of A, B and the class C of both of them.

I am not sure what "for each A, we query for objects B" means since
from your description above they seem to be unrelated.

> Strangely, I have only output of C == '2'.
> I then tried to compare the pointer of both C object stored in A and B.
> I found that they are the same! So for each loop on objects B, the value of
> A->C is updated to values of B->C.

I can't think of any reason why this would happen other than if both C's
had the same primary key. So I would need to see the actual code that
does the query. Actual class declarations could also be helpful. What
happens if you print the value of A-C before you "query for objects B"?

> Do you have any int to avoid this problem?

int64_t helps with all kinds of problems ;-)


More information about the odb-users mailing list