public InheritanceAwareEntityRowReader(RowDescriptor descriptor, EntityResultSegment segmentMetadata, DataRowPostProcessor postProcessor) { super(descriptor, segmentMetadata, postProcessor); this.entityInheritanceTree = segmentMetadata.getClassDescriptor().getEntityInheritanceTree(); }
DataRowPostProcessor(ClassDescriptor classDescriptor, Map<String, Collection<ColumnOverride>> columnOverrides) { if (classDescriptor != null && classDescriptor.hasSubclasses()) { this.inheritanceTree = classDescriptor.getEntityInheritanceTree(); this.columnOverrides = columnOverrides; } else { if (columnOverrides.size() != 1) { throw new IllegalArgumentException("No inheritance - there must be only one override set"); } defaultOverrides = columnOverrides.values().iterator().next(); } }
InheritanceAwareRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DataRowPostProcessor postProcessor) { super(descriptor, queryMetadata, postProcessor); this.entityInheritanceTree = queryMetadata.getClassDescriptor().getEntityInheritanceTree(); }
public EntityInheritanceTree getEntityInheritanceTree() { checkDescriptorInitialized(); return descriptor.getEntityInheritanceTree(); }
JoinedIdParentAttachementStrategy(GraphManager graphManager, PrefetchProcessorNode node) { ClassDescriptor parentDescriptor = ((PrefetchProcessorNode) node.getParent()) .getResolver() .getDescriptor(); relatedIdPrefix = node .getIncoming() .getRelationship() .getReverseDbRelationshipPath() + "."; sourceEntities = parentDescriptor.getEntityInheritanceTree().allSubEntities(); this.node = node; this.graphManager = graphManager; }
/** * Returns a DataRow from the flat row. */ DataRow rowFromFlatRow(DataRow flatRow) { DataRow row = new DataRow(rowCapacity); // extract subset of flat row columns, recasting to the target keys for (ColumnDescriptor column : columns) { row.put(column.getName(), flatRow.get(column.getDataRowKey())); } // since JDBC row reader won't inject JOINED entity name, we have to // detect it here... ClassDescriptor descriptor = resolver.getDescriptor(); ObjEntity entity = descriptor.getEntityInheritanceTree().entityMatchingRow(row); row.setEntityName(entity.getName()); return row; }
.getEntityInheritanceTree() .qualifierForEntityAndSubclasses();
protected Expression extractQualifier() { // if additional qualifier is set, use it if(this.qualifier != null) { return this.qualifier; } Query q = queryAssembler.getQuery(); Expression qualifier = ((SelectQuery<?>) q).getQualifier(); // append Entity qualifiers, taking inheritance into account ObjEntity entity = getObjEntity(); if (entity != null) { ClassDescriptor descriptor = queryAssembler.getEntityResolver().getClassDescriptor(entity.getName()); Expression entityQualifier = descriptor.getEntityInheritanceTree().qualifierForEntityAndSubclasses(); if (entityQualifier != null) { qualifier = (qualifier != null) ? qualifier.andExp(entityQualifier) : entityQualifier; } } // Attaching root Db entity's qualifier if (getDbEntity() != null) { Expression dbQualifier = getDbEntity().getQualifier(); if (dbQualifier != null) { dbQualifier = dbQualifier.transform(new DbEntityQualifierTransformer()); qualifier = qualifier == null ? dbQualifier : qualifier.andExp(dbQualifier); } } return qualifier; }