how the relation table is created?

Forum for posting problems using QxOrm library

how the relation table is created?

Postby percywang » Fri May 31, 2013 2:44 am

I register a manytomany relation between class Parameter and class Element, but the relation table cann't be created automatically. Could anyone tell me what is the problem? Here is the code:
Code: Select all
in Element.h:
   typedef boost::shared_ptr<Parameter> parameter_ptr;
   typedef QList<parameter_ptr> list_parameter;
   // -- properties
   long m_id;
   QString m_symbol;
   QString m_def;
   double m_height;
   double m_width;
   list_parameter m_params;

Code: Select all
in Element.cpp:
namespace qx {
template <> void register_class(QxClass<Element> & t)
{
   t.id(& Element::m_id, Element::str_key1());

   t.data(& Element::m_symbol, Element::str_key2());
   t.data(& Element::m_def, Element::str_key3());
   t.data(& Element::m_height, Element::str_key4());
   t.data(& Element::m_width, Element::str_key5());
   t.relationManyToMany(& Element::m_params, "list_parameter", "parameter_element", Element::str_key1(), Parameter::str_key1());
}
}


Code: Select all
in Parameter.h
   typedef boost::shared_ptr<Element> element_ptr;
   typedef std::vector<element_ptr> list_element;
   // -- properties
   long m_id;
   QString m_symbol;
   QString m_def;
   QString m_unit;
   double m_value;
   list_element m_elements;


Code: Select all
in Parameter.cpp:
namespace qx {
template <> void register_class(QxClass<Parameter> & t)
{
   t.id(& Parameter::m_id, Parameter::str_key1());

   t.data(& Parameter::m_symbol, Parameter::str_key2());
   t.data(& Parameter::m_def, Parameter::str_key3());
   t.data(& Parameter::m_unit, Parameter::str_key4());
   t.data(& Parameter::m_value, Parameter::str_key5());
   t.relationManyToMany(& Parameter::m_elements, "list_element", "parameter_element", Parameter::str_key1(), Element::str_key1());
}
}


And in main.cpp, I create table Parameter and Element, but "parameter_element" is not created. Why?
Code: Select all
   QSqlError daoError = qx::dao::create_table<Parameter>();
   daoError = qx::dao::create_table<Element>();


Thanks!
percywang
 
Posts: 2
Joined: Tue May 28, 2013 10:51 am

Re: how the relation table is created?

Postby percywang » Fri May 31, 2013 5:28 am

I have fix it.

As the classes are designed without relation at first, the 2 tables were created when I ran the program. Relation table is created along with parent table's creation. So...I delete table Parameter and Element first, then run it again. Everything goes fine.
percywang
 
Posts: 2
Joined: Tue May 28, 2013 10:51 am

Re: how the relation table is created?

Postby qxorm » Wed Jun 05, 2013 3:26 pm

I have fix it... Everything goes fine.

Great ;o)
qxorm
Site Admin
 
Posts: 481
Joined: Mon Apr 12, 2010 7:45 am


Return to QxOrm - Help

Who is online

Users browsing this forum: No registered users and 8 guests

cron