Revision 5c53ac99
Von Christian Ehringfeld vor fast 10 Jahren hinzugefügt
src/entitymanager.cpp | ||
---|---|---|
qvariant_cast<QList<QSharedPointer<Entity>>>(property);
|
||
if (!list.isEmpty()) {
|
||
auto ptr = list.at(0);
|
||
auto builder = this->schema.data()->getQueryBuilder();
|
||
QString tblName = builder.data()->generateManyToManyTableName(entity, ptr);
|
||
if (this->schema.data()->getTables().contains(tblName)) {
|
||
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->manyToManyDelete(
|
||
QSqlQuery q = builder.data()->manyToManyDelete(
|
||
tblName, builder.data()->generateManyToManyColumnName(entity),
|
||
entity.data()->getId());
|
||
if (this->db.data()->transaction(q)) {
|
||
q.clear();
|
||
QList<QSharedPointer<Entity>> persisted = QList<QSharedPointer<Entity>>();
|
||
q = this->schema.data()->getQueryBuilder().data()->manyToManyInsert(tblName,
|
||
builder.data()->generateManyToManyColumnName(entity),
|
||
builder.data()->generateManyToManyColumnName(ptr));
|
||
q = builder.data()->manyToManyInsert(tblName,
|
||
builder.data()->generateManyToManyColumnName(entity),
|
||
builder.data()->generateManyToManyColumnName(ptr));
|
||
q.bindValue(0, entity.data()->getId());
|
||
for (int var = 0; var < list.size(); ++var) {
|
||
ptr = list.at(var);
|
||
if (ptr.data() && ((ptr.data()->getId() > -1 && r.getCascadeType() == MERGE)
|
||
|| r.getCascadeType() == ALL || r.getCascadeType() == PERSIST)) {
|
||
if (this->save(list.at(var))) {
|
||
if (this->save(ptr)) {
|
||
persisted.append(ptr);
|
||
}
|
||
}
|
src/querybuilder.h | ||
---|---|---|
#include <QSharedPointer>
|
||
#include <QPointer>
|
||
#include <QSqlQuery>
|
||
#include "relation.h"
|
||
namespace CuteEntityManager {
|
||
class Schema;
|
||
class Entity;
|
Auch abrufbar als: Unified diff
oops not compiling