- Code: Select all
class QX_SERVICE_DLL_EXPORT City
{
private:
typedef QSharedPointer<District> DistrictPtr;
long m_Id;
QString m_Name;
DistrictPtr m_District;
friend void registerOrm(qx::QxClass<City> & t);
public:
City() : m_Id(0) { ; }
virtual ~City() { ; }
inline long id() const { return m_Id; }
inline void setId(long id) { m_Id = id; }
inline const QString & name() const { return m_Name; }
inline void setName(const QString & name) { m_Name = name; }
inline const DistrictPtr & district() const { return m_District; }
inline void setDistrict(const DistrictPtr & district) { m_District = district; }
};
class QX_SERVICE_DLL_EXPORT District
{
public:
District() : m_Id(0) { ; }
virtual ~District() { ; }
inline long id() const { return m_Id; }
inline void setId(long id) { m_Id = id; }
inline const QString & name() { return m_Name; }
inline void setName(const QString & name) { m_Name = name; }
private:
long m_Id;
QString m_Name;
friend void registerOrm(qx::QxClass<District> & t);
};
CityPtr city(new City());
city->setName(CITY_NAME);
DistrictPtr district(new District());
district->setName(DISTRICT_NAME);
city->setDistrict(district);
/// Test insertion ///
QSqlError err = qx::dao::insert_with_all_relation(city);
QVERIFY(err.isValid() == false);
QVERIFY(city->id() != 0);
QVERIFY(district->id() != 0);
This code executes fine, but when I look at the database, in City table, DistrictId is 0. I should call qx::dao::save(city) after insert_with_all_relations in order to update that value (DistrictId). Doesn't qxorm automatically resolves IDs? Or we should assign them explicitly?
Thanks
Thanks.