Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 1a3b37ba

Von Christian Ehringfeld vor fast 9 Jahren hinzugefügt

  • ID 1a3b37ba4314001688f56e3c02870e75ea3ccbce
  • Vorgänger ba6f6521
  • Nachfolger 2e43da3f

Inheritance gedöns

Unterschiede anzeigen:

src/querybuilder.cpp
const {
auto map = QHash<QString, QString>();
auto o = entity.data()->metaObject();
auto superMetaObject = entity.data()->metaObject()->superClass();
auto superMetaObjectPropertyMap = this->superMetaObjectPropMap(superMetaObject,
entity);
QHash<QString, Relation> relations = entity.data()->getRelations();
for (int var = 0; var < o->propertyCount(); ++var) {
auto m = o->property(var);
if (m.name() != QString("objectName") && m.isReadable()
if (!superMetaObjectPropertyMap.contains(QString(m.name()))
&& m.name() != QString("objectName") && m.isReadable()
&& !entity.data()->getTransientAttributes().contains(m.name())) {
if (m.isEnumType()) {
map.insert(m.name(), this->schema.data()->getTypeMap().data()->value(
......
}
}
QString pkType = map.value(entity.data()->getPrimaryKey());
if (pkType == this->schema.data()->TYPE_BIGINT) {
map.insert(entity.data()->getPrimaryKey(), this->schema.data()->TYPE_BIGPK);
} else {
map.insert(entity.data()->getPrimaryKey(), this->schema.data()->TYPE_PK);
if (entity.data()->getInheritanceStrategy() != JOINED_TABLE
|| QString(superMetaObject->className()) == QString("Entity")) {
if (pkType == this->schema.data()->TYPE_BIGINT) {
map.insert(entity.data()->getPrimaryKey(), this->schema.data()->TYPE_BIGPK);
} else {
map.insert(entity.data()->getPrimaryKey(), this->schema.data()->TYPE_PK);
}
}
return map;
}
......
tableName + "." + foreignKey);
}
QHash<QString, QMetaProperty> QueryBuilder::superMetaObjectPropMap(
const QMetaObject *&superMeta, const QSharedPointer<Entity> &entity) const {
auto superMetaObjectPropertyMap = QHash<QString, QMetaProperty>();
if (QString(superMeta->className()) != QString("Entity")
&& entity.data()->getInheritanceStrategy() == JOINED_TABLE) {
for (int var = 0; var < superMeta->propertyCount(); ++var) {
QMetaProperty prop = superMeta->property(var);
if (prop.isReadable() && prop.isWritable()) {
superMetaObjectPropertyMap.insert(QString(prop.name()), prop);
}
}
}
return superMetaObjectPropertyMap;
}
QString QueryBuilder::superClassColumnName(const QMetaObject *&superMeta)
const {
return QString(superMeta->className()).toLower();
}
QString QueryBuilder::limit(const qint64 &limit, const qint64 &offset) const {
QString s = "";
if (limit > 0) {
......
auto i = relations.constBegin();
while (i != relations.constEnd()) {
Relation r = i.value();
if (r.getType() == MANY_TO_ONE && props.contains(i.key())
if ((r.getType() == MANY_TO_ONE && props.contains(i.key()))
|| (r.getType() == ONE_TO_ONE && r.getMappedBy().isEmpty())) {
auto v = props.value(i.key()).read(e);
if (v.canConvert<Entity *>()) {

Auch abrufbar als: Unified diff