QxOrm 1.4.9
C++ Object Relational Mapping library
Loading...
Searching...
No Matches

qx::QxSqlRelation<DataType, Owner> : base class for all relationships defined between 2 classes (or between 2 tables in database) More...

#include <QxSqlRelation.h>

Inheritance diagram for qx::QxSqlRelation< DataType, Owner >:
qx::IxSqlRelation qx::QxPropertyBag qx::QxSqlRelation_ManyToMany< DataType, Owner > qx::QxSqlRelation_ManyToOne< DataType, Owner > qx::QxSqlRelation_OneToMany< DataType, Owner > qx::QxSqlRelation_OneToOne< DataType, Owner >

Classes

struct  createItem_Helper
 
struct  createItem_Helper< true, dummy >
 
struct  getContainer_Helper
 
struct  getContainer_Helper< false, true, dummy >
 
struct  getContainer_Helper< true, false, dummy >
 
struct  getContainer_Helper< true, true, dummy >
 
struct  getData_Helper
 
struct  getData_Helper< false, true, dummy >
 
struct  getData_Helper< true, false, dummy >
 
struct  getData_Helper< true, true, dummy >
 
struct  isNullData_Helper
 
struct  isNullData_Helper< true, dummy >
 

Public Member Functions

 QxSqlRelation (IxDataMember *p)
 
virtual ~QxSqlRelation ()
 
virtual void init ()
 
- Public Member Functions inherited from qx::IxSqlRelation
 IxSqlRelation (IxDataMember *p)
 
virtual ~IxSqlRelation ()=0
 
QxCollection< QString, IxDataMember * > * getLstDataMember () const
 
IxSqlRelationXgetLstRelation () const
 
void setSqlJoinType (qx::dao::sql_join::join_type e)
 
qx::dao::sql_join::join_type getSqlJoinType () const
 
relation_type getRelationType () const
 
IxClassgetClass () const
 
IxClassgetClassOwner () const
 
IxDataMembergetDataMember () const
 
IxDataMemberXgetDataMemberX () const
 
IxDataMembergetDataId () const
 
IxDataMembergetDataIdOwner () const
 
QString getKey () const
 
QString getForeignKey () const
 
QString getForeignKeyOwner () const
 
QString getForeignKeyDataType () const
 
QString getExtraTable () const
 
long getDataCount () const
 
long getRelationCount () const
 
IxDataMembergetDataByKey (const QString &sKey) const
 
IxDataMembernextData (long &lIndex) const
 
IxSqlRelationnextRelation (long &lIndex) const
 
QString table () const
 
QString tableAlias (QxSqlRelationParams &params) const
 
QString tableAliasOwner (QxSqlRelationParams &params) const
 
QString getSqlJoin (qx::dao::sql_join::join_type e=qx::dao::sql_join::no_join) const
 
bool traceSqlQuery () const
 
virtual QString getDescription () const =0
 
virtual QString createExtraTable () const =0
 
virtual bool getCartesianProduct () const =0
 
virtual QVariant getIdFromQuery (bool bEager, QxSqlRelationParams &params, int iOffset, int iNameIndex) const =0
 
virtual void updateOffset (bool bEager, QxSqlRelationParams &params) const =0
 
virtual void createTable (QxSqlRelationParams &params) const =0
 
virtual void lazySelect (QxSqlRelationParams &params) const =0
 
virtual void eagerSelect (QxSqlRelationParams &params) const =0
 
virtual void lazyFrom (QxSqlRelationParams &params) const =0
 
virtual void eagerFrom (QxSqlRelationParams &params) const =0
 
virtual void lazyJoin (QxSqlRelationParams &params) const =0
 
virtual void eagerJoin (QxSqlRelationParams &params) const =0
 
virtual void lazyWhere (QxSqlRelationParams &params) const =0
 
virtual void eagerWhere (QxSqlRelationParams &params) const =0
 
virtual void lazyWhereSoftDelete (QxSqlRelationParams &params) const =0
 
virtual void eagerWhereSoftDelete (QxSqlRelationParams &params) const =0
 
virtual void lazyFetch_ResolveInput (QxSqlRelationParams &params) const =0
 
virtual void eagerFetch_ResolveInput (QxSqlRelationParams &params) const =0
 
virtual void lazyFetch_ResolveOutput (QxSqlRelationParams &params) const =0
 
virtual void * eagerFetch_ResolveOutput (QxSqlRelationParams &params) const =0
 
virtual void lazyInsert (QxSqlRelationParams &params) const =0
 
virtual void lazyInsert_Values (QxSqlRelationParams &params) const =0
 
virtual void lazyUpdate (QxSqlRelationParams &params) const =0
 
virtual void lazyInsert_ResolveInput (QxSqlRelationParams &params) const =0
 
virtual void lazyUpdate_ResolveInput (QxSqlRelationParams &params) const =0
 
virtual QSqlError onBeforeSave (QxSqlRelationParams &params) const =0
 
virtual QSqlError onAfterSave (QxSqlRelationParams &params) const =0
 
bool verifyOffset (QxSqlRelationParams &params, bool bId) const QX_USED
 
- Public Member Functions inherited from qx::QxPropertyBag
 QxPropertyBag ()
 
virtual ~QxPropertyBag ()
 
void setPropertyBag (const QString &key, const QVariant &value)
 
QVariant getPropertyBag (const QString &key) const
 
void removePropertyBag (const QString &key)
 
void clearPropertyBag ()
 
long countPropertyBag () const
 
QList< QString > getAllPropertyBagKeys () const
 

Protected Types

enum  { is_valid = (qx::trait::is_qx_registered<type_data>::value && qx::trait::is_qx_registered<type_owner>::value) }
 
enum  { is_data_pointer = (std::is_pointer<DataType>::value || qx::trait::is_smart_ptr<DataType>::value) }
 
enum  { is_data_container = qx::trait::is_container<type_container>::value }
 
enum  { is_same_data_owner = std::is_same<type_data, type_owner>::value }
 
typedef qx::trait::remove_attr< DataType >::type type_tmp_1
 
typedef qx::trait::remove_smart_ptr< type_tmp_1 >::type type_tmp_2
 
typedef type_tmp_2 type_container
 
typedef qx::trait::generic_container< type_containertype_generic_container
 
typedef type_generic_container::type_item type_item
 
typedef std::conditional< qx::trait::is_container< type_container >::value, typenametype_generic_container::type_value_qx, type_container >::type type_tmp_3
 
typedef QxSqlRelation< DataType, Owner >::type_tmp_3 type_data
 
typedef Owner type_owner
 
- Protected Types inherited from qx::QxPropertyBag
typedef QHash< QString, QVariant > type_hash_prop_bag
 
typedef std::shared_ptr< type_hash_prop_bagtype_hash_prop_bag_ptr
 

Protected Member Functions

DataType * getDataTypePtr (QxSqlRelationParams &params) const
 
type_ownergetOwner (QxSqlRelationParams &params) const
 
type_datagetData (QxSqlRelationParams &params) const
 
type_containergetContainer (QxSqlRelationParams &params) const
 
type_item createItem () const
 
bool isNullData (QxSqlRelationParams &params) const
 
bool callTriggerBeforeFetch (type_data &t, QxSqlRelationParams &params) const
 
bool callTriggerAfterFetch (type_data &t, QxSqlRelationParams &params) const
 
- Protected Member Functions inherited from qx::IxSqlRelation
QVariant getIdFromQuery_ManyToMany (bool bEager, QxSqlRelationParams &params, int iOffset, int iNameIndex) const
 
QVariant getIdFromQuery_ManyToOne (bool bEager, QxSqlRelationParams &params, int iOffset, int iNameIndex) const
 
QVariant getIdFromQuery_OneToMany (bool bEager, QxSqlRelationParams &params, int iOffset, int iNameIndex) const
 
QVariant getIdFromQuery_OneToOne (bool bEager, QxSqlRelationParams &params, int iOffset, int iNameIndex) const
 
void updateOffset_ManyToMany (bool bEager, QxSqlRelationParams &params) const
 
void updateOffset_ManyToOne (bool bEager, QxSqlRelationParams &params) const
 
void updateOffset_OneToMany (bool bEager, QxSqlRelationParams &params) const
 
void updateOffset_OneToOne (bool bEager, QxSqlRelationParams &params) const
 
void eagerSelect_ManyToMany (QxSqlRelationParams &params) const
 
void eagerSelect_ManyToOne (QxSqlRelationParams &params) const
 
void eagerSelect_OneToMany (QxSqlRelationParams &params) const
 
void eagerSelect_OneToOne (QxSqlRelationParams &params) const
 
void eagerJoin_ManyToMany (QxSqlRelationParams &params) const
 
void eagerJoin_ManyToOne (QxSqlRelationParams &params) const
 
void eagerJoin_OneToMany (QxSqlRelationParams &params) const
 
void eagerJoin_OneToOne (QxSqlRelationParams &params) const
 
void eagerWhereSoftDelete_ManyToMany (QxSqlRelationParams &params) const
 
void eagerWhereSoftDelete_ManyToOne (QxSqlRelationParams &params) const
 
void eagerWhereSoftDelete_OneToMany (QxSqlRelationParams &params) const
 
void eagerWhereSoftDelete_OneToOne (QxSqlRelationParams &params) const
 
void lazySelect_ManyToOne (QxSqlRelationParams &params) const
 
void lazyInsert_ManyToOne (QxSqlRelationParams &params) const
 
void lazyInsert_Values_ManyToOne (QxSqlRelationParams &params) const
 
void lazyUpdate_ManyToOne (QxSqlRelationParams &params) const
 
void createTable_ManyToOne (QxSqlRelationParams &params) const
 
QSqlError deleteFromExtraTable_ManyToMany (QxSqlRelationParams &params) const
 
QString createExtraTable_ManyToMany () const
 
bool addLazyRelation (QxSqlRelationParams &params, IxSqlRelation *pRelation) const
 
bool canInit () const
 
void setIsSameDataOwner (int i)
 
void setClass (IxClass *pClass, IxClass *pClassOwner)
 
void setRelationType (relation_type e)
 
void setForeignKey (const QString &s) const
 
void setForeignKeyOwner (const QString &s) const
 
void setForeignKeyDataType (const QString &s) const
 
void setExtraTable (const QString &s) const
 

Additional Inherited Members

- Public Types inherited from qx::IxSqlRelation
enum  relation_type {
  no_relation , one_to_one , one_to_many , many_to_one ,
  many_to_many
}
 
- Static Public Member Functions inherited from qx::IxSqlRelation
static void setTraceRelationInit (bool bTrace)
 
- Protected Attributes inherited from qx::QxPropertyBag
type_hash_prop_bag_ptr m_lstPropertyBag
 List of all properties in the bag (meta-data)
 

Detailed Description

template<class DataType, class Owner>
class qx::QxSqlRelation< DataType, Owner >

qx::QxSqlRelation<DataType, Owner> : base class for all relationships defined between 2 classes (or between 2 tables in database)

Definition at line 69 of file QxSqlRelation.h.

Member Typedef Documentation

◆ type_container

template<class DataType , class Owner >
typedef type_tmp_2 qx::QxSqlRelation< DataType, Owner >::type_container
protected

Definition at line 76 of file QxSqlRelation.h.

◆ type_data

template<class DataType , class Owner >
typedef QxSqlRelation<DataType,Owner>::type_tmp_3 qx::QxSqlRelation< DataType, Owner >::type_data
protected

Definition at line 80 of file QxSqlRelation.h.

◆ type_generic_container

template<class DataType , class Owner >
typedef qx::trait::generic_container<type_container> qx::QxSqlRelation< DataType, Owner >::type_generic_container
protected

Definition at line 77 of file QxSqlRelation.h.

◆ type_item

template<class DataType , class Owner >
typedef type_generic_container::type_item qx::QxSqlRelation< DataType, Owner >::type_item
protected

Definition at line 78 of file QxSqlRelation.h.

◆ type_owner

template<class DataType , class Owner >
typedef Owner qx::QxSqlRelation< DataType, Owner >::type_owner
protected

Definition at line 81 of file QxSqlRelation.h.

◆ type_tmp_1

template<class DataType , class Owner >
typedef qx::trait::remove_attr<DataType>::type qx::QxSqlRelation< DataType, Owner >::type_tmp_1
protected

Definition at line 74 of file QxSqlRelation.h.

◆ type_tmp_2

template<class DataType , class Owner >
typedef qx::trait::remove_smart_ptr<type_tmp_1>::type qx::QxSqlRelation< DataType, Owner >::type_tmp_2
protected

Definition at line 75 of file QxSqlRelation.h.

◆ type_tmp_3

template<class DataType , class Owner >
typedef std::conditional<qx::trait::is_container<type_container>::value,typenametype_generic_container::type_value_qx,type_container>::type qx::QxSqlRelation< DataType, Owner >::type_tmp_3
protected

Definition at line 79 of file QxSqlRelation.h.

Member Enumeration Documentation

◆ anonymous enum

template<class DataType , class Owner >
anonymous enum
protected
Enumerator
is_data_pointer 

Definition at line 84 of file QxSqlRelation.h.

◆ anonymous enum

template<class DataType , class Owner >
anonymous enum
protected
Enumerator
is_data_container 

Definition at line 85 of file QxSqlRelation.h.

◆ anonymous enum

template<class DataType , class Owner >
anonymous enum
protected
Enumerator
is_same_data_owner 

Definition at line 86 of file QxSqlRelation.h.

◆ anonymous enum

template<class DataType , class Owner >
anonymous enum
protected
Enumerator
is_valid 

Definition at line 83 of file QxSqlRelation.h.

Constructor & Destructor Documentation

◆ QxSqlRelation()

template<class DataType , class Owner >
qx::QxSqlRelation< DataType, Owner >::QxSqlRelation ( IxDataMember * p)
inline

Definition at line 90 of file QxSqlRelation.h.

◆ ~QxSqlRelation()

template<class DataType , class Owner >
virtual qx::QxSqlRelation< DataType, Owner >::~QxSqlRelation ( )
inlinevirtual

Definition at line 91 of file QxSqlRelation.h.

Member Function Documentation

◆ callTriggerAfterFetch()

template<class DataType , class Owner >
bool qx::QxSqlRelation< DataType, Owner >::callTriggerAfterFetch ( type_data & t,
QxSqlRelationParams & params ) const
inlineprotected

Definition at line 127 of file QxSqlRelation.h.

◆ callTriggerBeforeFetch()

template<class DataType , class Owner >
bool qx::QxSqlRelation< DataType, Owner >::callTriggerBeforeFetch ( type_data & t,
QxSqlRelationParams & params ) const
inlineprotected

Definition at line 120 of file QxSqlRelation.h.

◆ createItem()

template<class DataType , class Owner >
type_item qx::QxSqlRelation< DataType, Owner >::createItem ( ) const
inlineprotected

Definition at line 114 of file QxSqlRelation.h.

◆ getContainer()

template<class DataType , class Owner >
type_container & qx::QxSqlRelation< DataType, Owner >::getContainer ( QxSqlRelationParams & params) const
inlineprotected

Definition at line 111 of file QxSqlRelation.h.

◆ getData()

template<class DataType , class Owner >
type_data & qx::QxSqlRelation< DataType, Owner >::getData ( QxSqlRelationParams & params) const
inlineprotected

Definition at line 108 of file QxSqlRelation.h.

◆ getDataTypePtr()

template<class DataType , class Owner >
DataType * qx::QxSqlRelation< DataType, Owner >::getDataTypePtr ( QxSqlRelationParams & params) const
inlineprotected

Definition at line 102 of file QxSqlRelation.h.

◆ getOwner()

template<class DataType , class Owner >
type_owner & qx::QxSqlRelation< DataType, Owner >::getOwner ( QxSqlRelationParams & params) const
inlineprotected

Definition at line 105 of file QxSqlRelation.h.

◆ init()

template<class DataType , class Owner >
virtual void qx::QxSqlRelation< DataType, Owner >::init ( )
inlinevirtual

Reimplemented from qx::IxSqlRelation.

Definition at line 93 of file QxSqlRelation.h.

◆ isNullData()

template<class DataType , class Owner >
bool qx::QxSqlRelation< DataType, Owner >::isNullData ( QxSqlRelationParams & params) const
inlineprotected

Definition at line 117 of file QxSqlRelation.h.


The documentation for this class was generated from the following file: