|
| ManyToManyRelation (const ManyToManyRelation &other)=default |
|
| ManyToManyRelation (DataExecution::TypedObject< DataExecution::TypedObjectArray< T > > &dataMember, const QString &foreignKey, const QString &foreignKeyOwner, const QString &intersectionTableName) |
|
ManyToManyRelation< T > * | clone () const override |
|
SqlBindingRelation * | deepCopy (const SqlBoundObjectGroupData *owner, DataExecution::DataObject &boundObject) override |
|
QStringList | getAllRelationNames () const override |
|
const DataExecution::DataObject & | getBoundObject () const override |
|
const SqlBoundObjectClassData & | getBoundObjectClassData () const override |
|
const DataExecution::DataFactory & | getBoundType () const override |
|
QString | getJoinStatement () const override |
|
SqlBindingRelationMap | getRelationBindings (const QStringList &relationNames, bool recursive) override |
|
QStringList | getSqlValidFieldList () const override |
|
bool | isBoundObjectArray () const override |
|
SqlDataModelResult | populateDataImpl (SqlDataModel &model, const QSqlRecord &record, QSqlQuery &query, const QStringList &relations=QStringList()) override |
|
SqlDataModelResult | saveBoundObject (SqlDataModel &model, const QStringList &relations) const override |
|
| SqlBindingRelation (const SqlBindingRelation &)=default |
|
SqlBindingRelation * | clone () const override=0 |
|
virtual SqlBindingRelation * | deepCopy (const SqlBoundObjectGroupData *owner, DataExecution::DataObject &boundObject)=0 |
|
virtual QStringList | getAllRelationNames () const =0 |
|
DataExecution::DataObject & | getBoundObject () |
|
virtual const DataExecution::DataObject & | getBoundObject () const =0 |
|
virtual const SqlBoundObjectClassData & | getBoundObjectClassData () const =0 |
|
virtual const DataExecution::DataFactory & | getBoundType () const =0 |
|
RelationCardinality | getCardinality () const |
|
const QString & | getForeignKey () const |
|
virtual QString | getJoinStatement () const =0 |
|
virtual SqlBindingRelationMap | getRelationBindings (const QStringList &relationNames, bool recursive)=0 |
|
virtual QStringList | getSqlValidFieldList () const =0 |
|
virtual bool | isBoundObjectArray () const =0 |
|
SqlBindingRelation & | operator= (const SqlBindingRelation &)=default |
|
SqlDataModelResult | populateData (SqlDataModel &model, const QSqlRecord &record, QSqlQuery &query, const QStringList &relations=QStringList()) |
|
virtual SqlDataModelResult | saveBoundObject (SqlDataModel &model, const QStringList &relations) const =0 |
|
virtual | ~Clonable ()=default |
|
virtual Clonable * | clone () const =0 |
|
| IsDerivedFrom () |
|
template<typename T>
class CSIRO::DataAnalysis::ManyToManyRelation< T >
- Template Parameters
-
T | The specific type of bound object (derived from SqlBoundObjectGroup) that this relation refers to. Note that this relation type actually refers to an array of such types; TypedObjectArray<T>. |
A many-to-many relation is where multiple objects of the same type are associated with another object of a different type, and that object itself is associated with multiple objects of the owner's type. In database terms, it is implemented using an intersection table.
Conceptually, the relationship looks like this:
Owner ---(has many)--> T
Owner <--(has many)--- T
And from a database perspective it looks like:
Owner_Table <--(foreign key)--- Intersection_Table ---(foreign key)--> T_Table