public String fromTableFragment(String name) { return getTableName() + ' ' + name; }
protected void addDiscriminatorToSelect(SelectFragment select, String name, String suffix) { if ( isDiscriminatorFormula() ) { select.addFormula( name, getDiscriminatorFormulaTemplate(), getDiscriminatorAlias() ); } else { select.addColumn( name, getDiscriminatorColumnName(), getDiscriminatorAlias() ); } }
private boolean needsDiscriminator() { return forceDiscriminator || isInherited(); }
@Override public String filterFragment(String alias) throws MappingException { String result = discriminatorFilterFragment( alias ); if ( hasWhere() ) { result += " and " + getSQLWhereString( alias ); } return result; }
protected void doPostInstantiate() { if ( hasSequentialSelects ) { String[] entityNames = getSubclassClosure(); for ( int i = 1; i < entityNames.length; i++ ) { Loadable loadable = (Loadable) getFactory().getEntityPersister( entityNames[i] ); if ( !loadable.isAbstract() ) { //perhaps not really necessary... String sequentialSelect = generateSequentialSelect( loadable ); sequentialSelectStringsByEntityName.put( entityNames[i], sequentialSelect ); } } } }
isInverseTable[0] = false; isNullableTable[0] = false; keyColumnNames[0] = getIdentifierColumnNames(); cascadeDeleteEnabled = new boolean[joinSpan]; ); final boolean lazyAvailable = isInstrumented(EntityMode.POJO); propertyTableNumbers = new int[ getPropertySpan() ]; Iterator iter = persistentClass.getPropertyClosureIterator(); int i=0; prop.getPersistentClass().getEntityName() + '.' + prop.getName(), join ); initLockers(); initSubclassPropertyAliasesMap(persistentClass); postConstruct(mapping);
isInverseTable[0] = false; isNullableTable[0] = false; keyColumnNames[0] = getIdentifierColumnNames(); cascadeDeleteEnabled = new boolean[joinSpan]; initializeCustomSql( entityBinding.getCustomInsert(), 0, customSQLInsert, insertCallable, insertResultCheckStyles ); initializeCustomSql( entityBinding.getCustomUpdate(), 0, customSQLUpdate, updateCallable, updateResultCheckStyles ); initializeCustomSql( entityBinding.getCustomDelete(), 0, customSQLDelete, deleteCallable, deleteResultCheckStyles ); final boolean lazyAvailable = isInstrumented(); ArrayList<Boolean> isLazies = new ArrayList<Boolean>(); subclassTables.add( qualifiedTableNames[0] ); joinKeyColumns.add( getIdentifierColumnNames() ); isConcretes.add(Boolean.TRUE); isDeferreds.add(Boolean.FALSE); DerivedValue formula = ( DerivedValue ) discriminatorRelationalValue; discriminatorFormula = formula.getExpression(); discriminatorFormulaTemplate = getTemplateFromString( formula.getExpression(), factory ); discriminatorColumnName = null; discriminatorColumnReaders = null; column.getColumnName().encloseInQuotesIfQuoted( factory.getDialect() ) : column.getReadFragment(); discriminatorColumnReaderTemplate = getTemplateFromColumn( column, factory ); discriminatorAlias = column.getAlias( factory.getDialect() ); discriminatorFormula = null;
private String discriminatorFilterFragment(String alias) throws MappingException { if ( needsDiscriminator() ) { InFragment frag = new InFragment(); if ( isDiscriminatorFormula() ) { frag.setFormula( alias, getDiscriminatorFormulaTemplate() ); } else { frag.setColumn( alias, getDiscriminatorColumnName() ); } String[] subclasses = getSubclassClosure(); for ( int i=0; i<subclasses.length; i++ ) { final Queryable queryable = (Queryable) getFactory().getEntityPersister( subclasses[i] ); if ( !queryable.isAbstract() ) frag.addValue( queryable.getDiscriminatorSQLValue() ); } StringBuffer buf = new StringBuffer(50) .append(" and ") .append( frag.toFragmentString() ); return buf.toString(); } else { return ""; } }
keyColumnNames = new String[joinSpan][]; final Table table = persistentClass.getRootTable(); qualifiedTableNames[0] = determineTableName( table, jdbcEnvironment ); keyColumnNames[0] = getIdentifierColumnNames(); cascadeDeleteEnabled = new boolean[joinSpan]; while ( joinIter.hasNext() ) { Join join = (Join) joinIter.next(); qualifiedTableNames[j] = determineTableName( join.getTable(), jdbcEnvironment ); isInverseTable[j] = join.isInverse(); isNullableTable[j] = join.isOptional() final boolean lazyAvailable = isInstrumented(); ArrayList<Boolean> isLazies = new ArrayList<Boolean>(); subclassTables.add( qualifiedTableNames[0] ); joinKeyColumns.add( getIdentifierColumnNames() ); isConcretes.add( Boolean.TRUE ); isDeferreds.add( Boolean.FALSE ); String joinTableName = determineTableName( join.getTable(), jdbcEnvironment ); subclassTables.add( joinTableName ); propertyTableNumbers = new int[getPropertySpan()]; Iterator iter = persistentClass.getPropertyClosureIterator(); int i = 0; subclassClosure[0] = getEntityName();
isInverseTable[0] = false; isNullableTable[0] = false; keyColumnNames[0] = getIdentifierColumnNames(); cascadeDeleteEnabled = new boolean[joinSpan]; ); final boolean lazyAvailable = isLazyAvailable(); ArrayList isLazies = new ArrayList(); subclassTables.add( qualifiedTableNames[0] ); joinKeyColumns.add( getIdentifierColumnNames() ); isConcretes.add(Boolean.TRUE); isDeferreds.add(Boolean.FALSE); propertyTableNumbers = new int[ getPropertySpan() ]; Iterator iter = persistentClass.getPropertyClosureIterator(); int i=0; subclassClosure[0] = getEntityName(); if ( persistentClass.isPolymorphic() ) { subclassesByDiscriminatorValue.put( discriminatorValue, getEntityName() ); initLockers(); initSubclassPropertyAliasesMap(persistentClass); postConstruct(mapping);
private String discriminatorFilterFragment(String alias, Set<String> treatAsDeclarations) { final boolean hasTreatAs = treatAsDeclarations != null && !treatAsDeclarations.isEmpty(); if ( !needsDiscriminator() && !hasTreatAs ) { return ""; } final InFragment frag = new InFragment(); if ( isDiscriminatorFormula() ) { frag.setFormula( alias, getDiscriminatorFormulaTemplate() ); } else { frag.setColumn( alias, getDiscriminatorColumnName() ); } if ( hasTreatAs ) { frag.addValues( decodeTreatAsRequests( treatAsDeclarations ) ); } else { frag.addValues( fullDiscriminatorValues() ); } return " and " + frag.toFragmentString(); }
String[] idColumnNames = entityPersister.getIdentifierColumnNames(); if (idColumnNames.length != 1) String sql = "select max(" + idColumnNames[0] + ") from " + entityPersister.getTableName(); ResultSet rs = statement.executeQuery(sql); if (!rs.next())
protected void addDiscriminatorToInsert(Insert insert) { if ( discriminatorInsertable ) { insert.addColumn( getDiscriminatorColumnName(), discriminatorSQLValue ); } }
private int getSubclassPropertyTableNumber(String propertyName, String entityName) { // When there are duplicated property names in the subclasses // then propertyMapping.toType( propertyName ) may return an // incorrect Type. To ensure correct results, lookup the property type // using the concrete EntityPersister with the specified entityName // (since the concrete EntityPersister cannot have duplicated property names). final EntityPersister concreteEntityPersister; if ( getEntityName().equals( entityName ) ) { concreteEntityPersister = this; } else { concreteEntityPersister = getFactory().getMetamodel().entityPersister( entityName ); } Type type = concreteEntityPersister.getPropertyType( propertyName ); if ( type.isAssociationType() && ( (AssociationType) type ).useLHSPrimaryKey() ) { return 0; } final Integer tabnum = propertyTableNumbersByNameAndSubclass.get( entityName + '.' + propertyName ); return tabnum == null ? 0 : tabnum; }
public String filterFragment(String alias) throws MappingException { String result = discriminatorFilterFragment(alias); if ( hasWhere() ) result += " and " + getSQLWhereString(alias); return result; }
public String getPropertyTableName(String propertyName) { Integer index = getEntityMetamodel().getPropertyIndexOrNull( propertyName ); if ( index == null ) { return null; } return qualifiedTableNames[propertyTableNumbers[index]]; }
@Override public String[] getIdentifierColumnNames() { return inSuperConstructor() ? new String[]{""} : persister.getIdentifierColumnNames(); }
@Override @SuppressWarnings("deprecation") public Class getMappedSuperclass() { final String entityName = persister.getMappedSuperclass(); return entityName != null ? persister.getEntityMetamodel().getSessionFactory().getEntityPersister(entityName).getMappedClass() : null; }
@Override public String getDiscriminatorAlias(final String suffix) { return persister.getDiscriminatorAlias(suffix); }
public void postInstantiate() { super.postInstantiate(); if (hasSequentialSelects) { String[] entityNames = getSubclassClosure(); for ( int i=1; i<entityNames.length; i++ ) { Loadable loadable = (Loadable) getFactory().getEntityPersister( entityNames[i] ); if ( !loadable.isAbstract() ) { //perhaps not really necessary... String sequentialSelect = generateSequentialSelect(loadable); sequentialSelectStringsByEntityName.put( entityNames[i], sequentialSelect ); } } } }