Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 4e75d5a1

Von Christian Ehringfeld vor mehr als 8 Jahren hinzugefügt

  • ID 4e75d5a1eccaf269829248be40dbe3f2e0160e01
  • Vorgänger 01fe6db3
  • Nachfolger 46d2de48

many-to-many table name resolve

Unterschiede anzeigen:

src/entitymanager.cpp
this->db->startTransaction();
auto builder = this->schema->getQueryBuilder();
q = builder->manyToManyInsert(tblName,
builder->generateManyToManyColumnName(entity),
builder->generateManyToManyColumnName(ptr));
builder->generateManyToManyColumnName(entity,r.getPropertyName()),
builder->generateManyToManyColumnName(ptr,r.getMappedBy()));
q.bindValue(0, entity->getProperty(entity->getPrimaryKey()));
auto prop = EntityHelper::mappedProperty(r, ptr);
QSharedPointer<Entity> item;
......
QString tblName = builder->generateManyToManyTableName(e, ptr, r);
if (this->schema->getTables().contains(tblName)) {
QSqlQuery q = builder->manyToManyDelete(
tblName, builder->generateManyToManyColumnName(e),
tblName, builder->generateManyToManyColumnName(e,r.getPropertyName()),
e->getProperty(e->getPrimaryKey()).toLongLong());
if (this->db->exec(q)) {
bool refresh = r.getCascadeType().contains(CascadeType::REFRESH)
......
* @todo diff and remove entity from relational object when association is deleted
*/
q = builder->manyToManyDelete(
tblName, builder->generateManyToManyColumnName(entity),
tblName, builder->generateManyToManyColumnName(entity,r.getPropertyName()),
entity->getProperty(entity->getPrimaryKey()).toLongLong());
ok = this->db->exec(q);
} else {
......
relation);
if (this->schema->getTables().contains(tblName)) {
QSqlQuery q = builder->manyToMany(tblName,
builder->generateManyToManyColumnName(entity),
builder->generateManyToManyColumnName(entity,relation.getPropertyName()),
entity->getProperty(entity->getPrimaryKey()).toLongLong());
auto listMap = this->convertQueryResult(q);
auto secClassName = EntityHelper::getClassName(secEntityPtr.data());
QSharedPointer<Entity> e;
for (int var = 0; var < listMap.size(); ++var) {
auto id = listMap.at(var).value(builder->generateManyToManyColumnName(secEntityPtr));
auto id = listMap.at(var).value(builder->generateManyToManyColumnName(secEntityPtr,relation.getMappedBy()));
if (refresh || !(this->cache.contains(id.toLongLong(), secClassName) &&
(e = this->cache.get(id.toLongLong(), secClassName)))) {
e = this->findById(id.toLongLong(), secClassName);

Auch abrufbar als: Unified diff