- Code: Select all
template <> void register_class(QxClass<Artist> & a)
{
a.id(& Artist::m_name, "name");
a.relationOneToMany(& Artist::m_media, "media", "artist_id");
}
The relation works as I can see from the database. However, when I am trying to load the media, even though they are related to the same Artist the two Artist objects are different (even though the names are same).
Consider this test-
- Code: Select all
void test()
{
qx::dao::create_table<Album>();
qx::dao::create_table<Artist>();
qx::dao::create_table<Media>();
QSharedPointer<Artist> artist(new Artist("Shaan"));
QSharedPointer<Media> media1(new Media("uri://media1"));
QSharedPointer<Media> media2(new Media("uri://media2"));
media1->setArtist(artist);
media2->setArtist(artist);
qx::dao::insert(media1);
qx::dao::insert(media2);
QSharedPointer<Media> fetchedMedia1(new Media("uri://media1"));
QSharedPointer<Media> fetchedMedia2(new Media("uri://media2"));
typedef qx::QxCollection< QString, QSharedPointer<Media> > MediaList;
MediaList medias;
qx::dao::fetch_all_with_all_relation(medias);
_foreach (QSharedPointer<Media> media, medias) {
qDebug() << media->artist().data() << media->artist()->name();
}
}
This outputs-
- Code: Select all
0x2357f80 "Shaan"
0x23513b0 "Shaan"
Is there a way I can ask QxOrm that the two Media to point to the same object of Artist in this case? I'd want the output of the above program to be this-
- Code: Select all
0x2357f80 "Shaan"
0x2357f80 "Shaan"