@@ -87,16 +87,20 @@ export class MetadataTable<T> extends MetadataTableBase<T> {
87
87
const columnKey = this . columnName ( expressionKey ) ;
88
88
const column = `${ columnReference } _${ columnKey } ` ;
89
89
const instance = this . validInstanceMapper ( this . instance , column ) ;
90
- const referenceInstance = this . validExpressionMapper ( instance , expression ) ( instance ) ;
91
- const mapperReference = this . getMapper ( referenceInstance . constructor . name ) ;
92
- const mapperColumnReference = mapperReference . mapperTable . getColumnByField ( expressionKey ) ;
90
+ let fieldType : FieldType ;
91
+ if ( type ) {
92
+ fieldType = this . _databaseHelper . getFieldType ( type ) ;
93
+ } else {
94
+ const referenceInstance = this . validExpressionMapper ( instance , expression ) ( instance ) ;
95
+ const mapperReference = this . getMapper ( referenceInstance . constructor . name ) ;
96
+ const mapperColumnReference = mapperReference . mapperTable . getColumnByField ( expressionKey ) ;
97
+ fieldType = mapperColumnReference
98
+ ? mapperColumnReference . fieldType
99
+ : this . getTypeByExpression ( referenceInstance , this . validExpressionMapper ( referenceInstance , expressionKey ) ) ;
100
+ }
93
101
this . addReference (
94
102
column ,
95
- type
96
- ? this . _databaseHelper . getFieldType ( type )
97
- : mapperColumnReference
98
- ? mapperColumnReference . fieldType
99
- : this . getTypeByExpression ( referenceInstance , this . validExpressionMapper ( referenceInstance , expressionKey ) )
103
+ fieldType
100
104
) ;
101
105
return this ;
102
106
}
@@ -165,7 +169,8 @@ export class MetadataTable<T> extends MetadataTableBase<T> {
165
169
private validExpressionMapper < TReturn , TType > (
166
170
instance : TType , expression : ReturnExpression < TReturn , TType >
167
171
) : ReturnExpression < TReturn , TType > {
168
- if ( Utils . isNull ( expression ) || Utils . isNull ( expression ( instance ) ) ) {
172
+ const expressionByInstance = expression ( instance ) ;
173
+ if ( Utils . isNull ( expression ) || Utils . isNull ( expressionByInstance ) ) {
169
174
throw new DatabaseBuilderError ( `Mapper: ${ this . newable . name } , can not get instance of mapped property ('${ this . columnName ( expression ) } ')` ) ;
170
175
}
171
176
return expression ;
0 commit comments