List of usage examples for org.hibernate.persister.entity AbstractEntityPersister getSubclassTableName
public abstract String getSubclassTableName(int j);
From source file:com.blazebit.persistence.integration.hibernate.base.HibernateJpaProvider.java
License:Apache License
@Override public String[] getColumnTypes(EntityType<?> entityType, String attributeName) { QueryableCollection collectionPersister = getCollectionPersister(entityType, attributeName); if (collectionPersister == null) { AbstractEntityPersister entityPersister = getEntityPersister(entityType); SessionFactoryImplementor sfi = entityPersister.getFactory(); String[] columnNames = entityPersister.getPropertyColumnNames(attributeName); Database database = sfi.getServiceRegistry().locateServiceBinding(Database.class).getService(); Table[] tables;/* w w w. j a v a 2 s . co m*/ if (entityPersister instanceof JoinedSubclassEntityPersister) { tables = new Table[((JoinedSubclassEntityPersister) entityPersister).getSubclassTableSpan()]; for (int i = 0; i < tables.length; i++) { tables[i] = database.getTable(entityPersister.getSubclassTableName(i)); } } else if (entityPersister instanceof UnionSubclassEntityPersister) { tables = new Table[((UnionSubclassEntityPersister) entityPersister).getSubclassTableSpan()]; for (int i = 0; i < tables.length; i++) { tables[i] = database.getTable(unquote(entityPersister.getSubclassTableName(i))); } } else if (entityPersister instanceof SingleTableEntityPersister) { tables = new Table[((SingleTableEntityPersister) entityPersister).getSubclassTableSpan()]; for (int i = 0; i < tables.length; i++) { tables[i] = database.getTable(unquote(entityPersister.getSubclassTableName(i))); } } else { tables = new Table[] { database.getTable(unquote(entityPersister.getTableName())) }; } // In this case, the property might represent a formula boolean isFormula = columnNames.length == 1 && columnNames[0] == null; boolean isSubselect = tables.length == 1 && tables[0] == null; if (isFormula || isSubselect) { Type propertyType = entityPersister.getPropertyType(attributeName); return getColumnTypeForPropertyType(entityType, attributeName, sfi, propertyType); } return getColumnTypesForColumnNames(entityType, columnNames, tables); } else { SessionFactoryImplementor sfi = collectionPersister.getFactory(); return getColumnTypeForPropertyType(entityType, attributeName, sfi, collectionPersister.getElementType()); } }