public String[][] getPolymorphicJoinColumns(String lhsTableAlias, String propertyPath) { Set<String> subclassEntityNames = getEntityMetamodel().getSubclassEntityNames(); // We will collect all the join columns from the LHS subtypes here List<String[]> polymorphicJoinColumns = new ArrayList<>( subclassEntityNames.size() ); String[] joinColumns; OUTER: for ( String subclassEntityName : subclassEntityNames ) { AbstractEntityPersister subclassPersister = (AbstractEntityPersister) getFactory() .getMetamodel() .entityPersister( subclassEntityName ); joinColumns = subclassPersister.toColumns( lhsTableAlias, propertyPath ); if ( joinColumns.length == 0 ) { // The subtype does not have a "concrete" mapping for the property path continue; } // Check for duplicates like this since we will mostly have just a few candidates for ( String[] existingColumns : polymorphicJoinColumns ) { if ( Arrays.deepEquals( existingColumns, joinColumns ) ) { continue OUTER; } } polymorphicJoinColumns.add( joinColumns ); } return ArrayHelper.to2DStringArray( polymorphicJoinColumns ); }
lazyPropertyColumnAliases = ArrayHelper.to2DStringArray( lazyColAliases ); lazyPropertyNames = ArrayHelper.toStringArray( lazyNames ); lazyPropertyNumbers = ArrayHelper.toIntArray( lazyNumbers ); subclassPropertyTypeClosure = ArrayHelper.toTypeArray( types ); subclassPropertyNullabilityClosure = ArrayHelper.toBooleanArray( propNullables ); subclassPropertyFormulaTemplateClosure = ArrayHelper.to2DStringArray( templates ); subclassPropertyColumnNameClosure = ArrayHelper.to2DStringArray( propColumns ); subclassPropertyColumnReaderClosure = ArrayHelper.to2DStringArray( propColumnReaders ); subclassPropertyColumnReaderTemplateClosure = ArrayHelper.to2DStringArray( propColumnReaderTemplates ); subclassPropertyColumnNumberClosure = ArrayHelper.to2DIntArray( propColumnNumbers ); subclassPropertyFormulaNumberClosure = ArrayHelper.to2DIntArray( propFormulaNumbers );
constraintOrderedKeyColumnNames = ArrayHelper.to2DStringArray( keyColumns );
naturalOrderTableKeyColumns = ArrayHelper.to2DStringArray( keyColumns ); naturalOrderTableKeyColumnReaders = ArrayHelper.to2DStringArray( keyColumnReaders ); naturalOrderTableKeyColumnReaderTemplates = ArrayHelper.to2DStringArray( keyColumnReaderTemplates ); naturalOrderCascadeDeleteEnabled = ArrayHelper.toBooleanArray( cascadeDeletes ); String[][] naturalOrderSubclassTableKeyColumnClosure = ArrayHelper.to2DStringArray( keyColumns ); isClassOrSuperclassTable = ArrayHelper.toBooleanArray( isConcretes ); subclassTableSequentialSelect = ArrayHelper.toBooleanArray( isDeferreds );
subclassTableNameClosure = ArrayHelper.toStringArray( subclassTables ); subclassTableIsLazyClosure = ArrayHelper.toBooleanArray( isLazies ); subclassTableKeyColumnClosure = ArrayHelper.to2DStringArray( joinKeyColumns ); isClassOrSuperclassTable = ArrayHelper.toBooleanArray( isConcretes ); isInverseSubclassTable = ArrayHelper.toBooleanArray( isInverses );
lazyPropertyColumnAliases = ArrayHelper.to2DStringArray( lazyColAliases ); lazyPropertyNames = ArrayHelper.toStringArray( lazyNames ); lazyPropertyNumbers = ArrayHelper.toIntArray( lazyNumbers ); subclassPropertyTypeClosure = ArrayHelper.toTypeArray( types ); subclassPropertyNullabilityClosure = ArrayHelper.toBooleanArray( propNullables ); subclassPropertyFormulaTemplateClosure = ArrayHelper.to2DStringArray( templates ); subclassPropertyColumnNameClosure = ArrayHelper.to2DStringArray( propColumns ); subclassPropertyColumnReaderClosure = ArrayHelper.to2DStringArray( propColumnReaders ); subclassPropertyColumnReaderTemplateClosure = ArrayHelper.to2DStringArray( propColumnReaderTemplates ); subclassPropertyColumnNumberClosure = ArrayHelper.to2DIntArray( propColumnNumbers ); subclassPropertyFormulaNumberClosure = ArrayHelper.to2DIntArray( propFormulaNumbers );
lazyPropertyColumnAliases = ArrayHelper.to2DStringArray( lazyColAliases ); lazyPropertyNames = ArrayHelper.toStringArray( lazyNames ); lazyPropertyNumbers = ArrayHelper.toIntArray( lazyNumbers ); subclassPropertyTypeClosure = ArrayHelper.toTypeArray( types ); subclassPropertyNullabilityClosure = ArrayHelper.toBooleanArray( propNullables ); subclassPropertyFormulaTemplateClosure = ArrayHelper.to2DStringArray( templates ); subclassPropertyColumnNameClosure = ArrayHelper.to2DStringArray( propColumns ); subclassPropertyColumnReaderClosure = ArrayHelper.to2DStringArray( propColumnReaders ); subclassPropertyColumnReaderTemplateClosure = ArrayHelper.to2DStringArray( propColumnReaderTemplates ); subclassPropertyColumnNumberClosure = ArrayHelper.to2DIntArray( propColumnNumbers ); subclassPropertyFormulaNumberClosure = ArrayHelper.to2DIntArray( propFormulaNumbers );
lazyPropertyColumnAliases = ArrayHelper.to2DStringArray( lazyColAliases ); lazyPropertyNames = ArrayHelper.toStringArray( lazyNames ); lazyPropertyNumbers = ArrayHelper.toIntArray( lazyNumbers ); subclassPropertyTypeClosure = ArrayHelper.toTypeArray( types ); subclassPropertyNullabilityClosure = ArrayHelper.toBooleanArray( propNullables ); subclassPropertyFormulaTemplateClosure = ArrayHelper.to2DStringArray( templates ); subclassPropertyColumnNameClosure = ArrayHelper.to2DStringArray( propColumns ); subclassPropertyColumnReaderClosure = ArrayHelper.to2DStringArray( propColumnReaders ); subclassPropertyColumnReaderTemplateClosure = ArrayHelper.to2DStringArray( propColumnReaderTemplates ); subclassPropertyColumnNumberClosure = ArrayHelper.to2DIntArray( propColumnNumbers ); subclassPropertyFormulaNumberClosure = ArrayHelper.to2DIntArray( propFormulaNumbers );
lazyPropertyColumnAliases = ArrayHelper.to2DStringArray( lazyColAliases ); lazyPropertyNames = ArrayHelper.toStringArray( lazyNames ); lazyPropertyNumbers = ArrayHelper.toIntArray( lazyNumbers ); subclassPropertyTypeClosure = ArrayHelper.toTypeArray( types ); subclassPropertyNullabilityClosure = ArrayHelper.toBooleanArray( propNullables ); subclassPropertyFormulaTemplateClosure = ArrayHelper.to2DStringArray( templates ); subclassPropertyColumnNameClosure = ArrayHelper.to2DStringArray( propColumns ); subclassPropertyColumnReaderClosure = ArrayHelper.to2DStringArray( propColumnReaders ); subclassPropertyColumnReaderTemplateClosure = ArrayHelper.to2DStringArray( propColumnReaderTemplates ); subclassPropertyColumnNumberClosure = ArrayHelper.to2DIntArray( propColumnNumbers ); subclassPropertyFormulaNumberClosure = ArrayHelper.to2DIntArray( propFormulaNumbers );
constraintOrderedKeyColumnNames = ArrayHelper.to2DStringArray( keyColumns );
constraintOrderedKeyColumnNames = ArrayHelper.to2DStringArray( keyColumns );
naturalOrderTableKeyColumns = ArrayHelper.to2DStringArray( keyColumns ); naturalOrderTableKeyColumnReaders = ArrayHelper.to2DStringArray( keyColumnReaders ); naturalOrderTableKeyColumnReaderTemplates = ArrayHelper.to2DStringArray( keyColumnReaderTemplates ); naturalOrderCascadeDeleteEnabled = ArrayHelper.toBooleanArray( cascadeDeletes ); String[][] naturalOrderSubclassTableKeyColumnClosure = ArrayHelper.to2DStringArray( keyColumns ); isClassOrSuperclassTable = ArrayHelper.toBooleanArray( isConcretes ); subclassTableSequentialSelect = ArrayHelper.toBooleanArray( isDeferreds );
naturalOrderTableKeyColumns = ArrayHelper.to2DStringArray( keyColumns ); naturalOrderTableKeyColumnReaders = ArrayHelper.to2DStringArray( keyColumnReaders ); naturalOrderTableKeyColumnReaderTemplates = ArrayHelper.to2DStringArray( keyColumnReaderTemplates ); naturalOrderCascadeDeleteEnabled = ArrayHelper.toBooleanArray( cascadeDeletes ); String[][] naturalOrderSubclassTableKeyColumnClosure = ArrayHelper.to2DStringArray( keyColumns ); isClassOrSuperclassTable = ArrayHelper.toBooleanArray( isConcretes ); subclassTableSequentialSelect = ArrayHelper.toBooleanArray( isDeferreds );
subclassTableNameClosure = ArrayHelper.toStringArray(subclassTables); subclassTableIsLazyClosure = ArrayHelper.toBooleanArray(isLazies); subclassTableKeyColumnClosure = ArrayHelper.to2DStringArray( joinKeyColumns ); isClassOrSuperclassTable = ArrayHelper.toBooleanArray(isConcretes); isInverseSubclassTable = ArrayHelper.toBooleanArray(isInverses);
subclassTableNameClosure = ArrayHelper.toStringArray(subclassTables); subclassTableIsLazyClosure = ArrayHelper.toBooleanArray(isLazies); subclassTableKeyColumnClosure = ArrayHelper.to2DStringArray( joinKeyColumns ); isClassOrSuperclassTable = ArrayHelper.toBooleanArray(isConcretes); isInverseSubclassTable = ArrayHelper.toBooleanArray(isInverses);
subclassTableNameClosure = ArrayHelper.toStringArray(subclassTables); subclassTableIsLazyClosure = ArrayHelper.toBooleanArray(isLazies); subclassTableKeyColumnClosure = ArrayHelper.to2DStringArray( joinKeyColumns ); isClassOrSuperclassTable = ArrayHelper.toBooleanArray(isConcretes); isInverseSubclassTable = ArrayHelper.toBooleanArray(isInverses);
subclassTableNameClosure = ArrayHelper.toStringArray(subclassTables); subclassTableIsLazyClosure = ArrayHelper.toBooleanArray(isLazies); subclassTableKeyColumnClosure = ArrayHelper.to2DStringArray( joinKeyColumns ); isClassOrSuperclassTable = ArrayHelper.toBooleanArray(isConcretes); isInverseSubclassTable = ArrayHelper.toBooleanArray(isInverses);