Projekt

Allgemein

Profil

Aktionen

Fehler #634

geschlossen

reinstantiated()-Methode für Entity

Von Sebastian Diel vor mehr als 7 Jahren hinzugefügt. Vor fast 6 Jahren aktualisiert.

Status:
Abgewiesen
Priorität:
Niedrig
Zugewiesen an:
Zielversion:
-
Beginn:
29.12.2016
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:
0:06 h

Beschreibung

Wenn man ->find nach einer Basisklasse macht, erhält man vom em nicht die vollen Informationen der abgeleiteten Klasse.
Hierfür wird man im Allgemeinen einen switch nachschalten müssen, der die Entities mit ihren abgeleiteten Klassen reinstantiiert. Innerhalb eines switches führt das aber zu unschönen Scope-Konstrukten:

        case Enums::AppType::ATTENDANCE: 
            {
                auto attendanceData = em->findById<AppAttendanceData>(this->getId(),true);
                result = attendanceData;
            }
        break;

Schöner ist ein Template, das an dieser Stelle den switch vereinfacht:

    template <class T> QSharedPointer<T> reinstantiated() {
        return EntityManager::getDefaultInstance()->findById<T>(this->getId(),true);
    }

Damit sähe der switch so aus:

        case Enums::AppType::ATTENDANCE: 
                result = this->reinstantiated<AppAttendanceData>();
        break;

Aktionen

Auch abrufbar als: Atom PDF