Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3fd96253

Von Christian Ehringfeld vor fast 9 Jahren hinzugefügt

  • ID 3fd962538d219c6666732dcd30c396cec9ea404e
  • Vorgänger abb9e8c5
  • Nachfolger d7727319

update, many to many is not fully working, but persisting works

Unterschiede anzeigen:

src/entitymanager.cpp
}
void EntityManager::persistMappedByRelation(const QList<QSharedPointer<Entity> >
&list, QSqlQuery &q, const QSharedPointer<Entity> &entity, const Relation &r,
&list, QSqlQuery &q, const QSharedPointer<Entity> &entity,
const QSharedPointer<Entity> &ptr, const Relation &r,
const QString &tblName) {
q.clear();
QSharedPointer<Entity> ptr;
QList<QSharedPointer<Entity>> saved = r.getCascadeType().contains(ALL)
|| r.getCascadeType().contains(MERGE)
|| r.getCascadeType().contains(PERSIST) ? this->saveRelationEntities(list,
......
q.bindValue(0, entity->getId());
QMetaProperty prop;
bool first = true;
QSharedPointer<Entity> item;
for (int var = 0; var < saved.size(); ++var) {
ptr = list.at(var);
item = list.at(var);
if (first && !r.getMappedBy().isEmpty()) {
auto props = ptr->getMetaProperties();
if (props.contains(r.getMappedBy())) {
prop = props.value(r.getMappedBy());
}
}
qDebug() << "Property valid:" << prop.isValid();
/**
@todo wip
**/
if (ptr->property(ptr->getPrimaryKey()).toLongLong() > -1) {
q.bindValue(1, ptr->property(ptr->getPrimaryKey()));
q.exec();
if (prop.isValid()) {
if (prop.isReadable()) {
this->addEntityToListProperty(entity, ptr, prop);
} else {
qDebug() << "Query exec for many to many relation failed." <<
q.lastError().text();
qDebug() << "Involved entities: " << entity->getClassname() <<
"(MainEntitiy) and " << entity->getClassname();
qDebug() << "Relation:" << r.getType() << r.getPropertyName();
}
}
}
......
entity->property(entity->getPrimaryKey()).toLongLong());
if (this->db->transaction(q)) {
auto nList = *reinterpret_cast<QList<QSharedPointer<Entity>>*>(property.data());
this->persistMappedByRelation(nList, q, entity, r, tblName);
this->persistMappedByRelation(nList, q, entity, ptr, r, tblName);
}
} else {
qDebug() << "MANY_TO_MANY Table " << tblName << " not exists";

Auch abrufbar als: Unified diff