public Value getDiscriminator() { return getSuperclass().getDiscriminator(); } public boolean isMutable() {
@SuppressWarnings({"unchecked"}) private Triple<Element, ExtendedPropertyMapper, String> generateMappingData( PersistentClass pc, EntityXmlMappingData xmlMappingData, AuditTableData auditTableData, IdMappingData idMapper) { final Element classMapping = MetadataTools.createEntity( xmlMappingData.getMainXmlMapping(), auditTableData, pc.getDiscriminatorValue(), pc.isAbstract() ); final ExtendedPropertyMapper propertyMapper = new MultiPropertyMapper(); // Checking if there is a discriminator column if ( pc.getDiscriminator() != null ) { final Element discriminatorElement = classMapping.addElement( "discriminator" ); // Database column or SQL formula allowed to distinguish entity types MetadataTools.addColumnsOrFormulas( discriminatorElement, pc.getDiscriminator().getColumnIterator() ); discriminatorElement.addAttribute( "type", pc.getDiscriminator().getType().getName() ); } // Adding the id mapping classMapping.add( (Element) idMapper.getXmlMapping().clone() ); // Adding the "revision type" property addRevisionType( classMapping, classMapping ); addAdditionalColumns( classMapping ); return Triple.make( classMapping, propertyMapper, null ); }
@Test public void testDiscriminatorFormulaInAuditTable() { assert parentAudit.getDiscriminator().hasFormula(); Iterator iterator = parentAudit.getDiscriminator().getColumnIterator(); while ( iterator.hasNext() ) { Object o = iterator.next(); if ( o instanceof Formula ) { Formula formula = (Formula) o; Assert.assertEquals( ParentEntity.DISCRIMINATOR_QUERY, formula.getText() ); return; } } assert false; }
final Value discriminatorMapping = persistentClass.getDiscriminator(); if ( discriminatorMapping != null ) { log.debug( "Encountered explicit discriminator mapping for joined inheritance" ); discriminatorAlias = column.getAlias( factory.getDialect(), persistentClass.getRootTable() ); discriminatorType = (DiscriminatorType) persistentClass.getDiscriminator().getType(); if ( persistentClass.isDiscriminatorValueNull() ) { discriminatorValue = NULL_DISCRIMINATOR;
public void bindDiscriminatorValue() { if ( StringHelper.isEmpty( discriminatorValue ) ) { Value discriminator = persistentClass.getDiscriminator(); if ( discriminator == null ) { persistentClass.setDiscriminatorValue( name ); } else if ( "character".equals( discriminator.getType().getName() ) ) { throw new AnnotationException( "Using default @DiscriminatorValue for a discriminator of type CHAR is not safe" ); } else if ( "integer".equals( discriminator.getType().getName() ) ) { persistentClass.setDiscriminatorValue( String.valueOf( name.hashCode() ) ); } else { persistentClass.setDiscriminatorValue( name ); //Spec compliant } } else { //persistentClass.getDiscriminator() persistentClass.setDiscriminatorValue( discriminatorValue ); } }
Value discrimValue = persistentClass.getDiscriminator(); if ( discrimValue == null ) { throw new MappingException( "discriminator mapping required for single table polymorphic persistence" ); discriminatorFormulaTemplate = null; discriminatorType = persistentClass.getDiscriminator().getType(); if ( persistentClass.isDiscriminatorValueNull() ) { discriminatorValue = NULL_DISCRIMINATOR;
public void bindDiscriminatorValue() { if ( StringHelper.isEmpty( discriminatorValue ) ) { Value discriminator = persistentClass.getDiscriminator(); if ( discriminator == null ) { persistentClass.setDiscriminatorValue( name ); } else if ( "character".equals( discriminator.getType().getName() ) ) { throw new AnnotationException( "Using default @DiscriminatorValue for a discriminator of type CHAR is not safe" ); } else if ( "integer".equals( discriminator.getType().getName() ) ) { persistentClass.setDiscriminatorValue( String.valueOf( name.hashCode() ) ); } else { persistentClass.setDiscriminatorValue( name ); //Spec compliant } } else { //persistentClass.getDiscriminator() persistentClass.setDiscriminatorValue( discriminatorValue ); } }
Value discrimValue = persistentClass.getDiscriminator(); if (discrimValue==null) { throw new MappingException("discriminator mapping required for single table polymorphic persistence"); discriminatorFormulaTemplate = null; discriminatorType = persistentClass.getDiscriminator().getType(); if ( persistentClass.isDiscriminatorValueNull() ) { discriminatorValue = NULL_DISCRIMINATOR;
public boolean needsDiscriminatorElement(PersistentClass clazz) { return clazz instanceof RootClass && (clazz.getDiscriminator() != null); }
public boolean needsDiscriminatorElement(PersistentClass clazz) { return clazz instanceof RootClass && (clazz.getDiscriminator() != null); }
public void bindDiscriminatorValue() { if ( StringHelper.isEmpty( discriminatorValue ) ) { Value discriminator = persistentClass.getDiscriminator(); if ( discriminator == null ) { persistentClass.setDiscriminatorValue( name ); } else if ( "character".equals( discriminator.getType().getName() ) ) { throw new AnnotationException( "Using default @DiscriminatorValue for a discriminator of type CHAR is not safe" ); } else if ( "integer".equals( discriminator.getType().getName() ) ) { persistentClass.setDiscriminatorValue( String.valueOf( name.hashCode() ) ); } else { persistentClass.setDiscriminatorValue( name ); //Spec compliant } } else { //persistentClass.getDiscriminator() persistentClass.setDiscriminatorValue( discriminatorValue ); } }
public Value getDiscriminator() { return getSuperclass().getDiscriminator(); } public boolean isMutable() {
public Value getDiscriminator() { return getSuperclass().getDiscriminator(); } public boolean isMutable() {
public Value getDiscriminator() { return getSuperclass().getDiscriminator(); } public boolean isMutable() {
public Value getDiscriminator() { return getSuperclass().getDiscriminator(); } public boolean isMutable() {
public Value getDiscriminator() { return getSuperclass().getDiscriminator(); }
private static EntityDiscriminator resolveDiscriminator(final PersistentClass persistentClass, final SessionFactoryImplementor factory) { if ( persistentClass.isPolymorphic() ) { Value discrimValue = persistentClass.getDiscriminator(); Selectable selectable = discrimValue.getColumnIterator().next(); if ( discrimValue.hasFormula() ) { throw new UnsupportedOperationException( "OGM doesn't support discriminator formulas" ); } else { return new ColumnBasedDiscriminator( persistentClass, factory, (Column) selectable ); } } else { return NotNeededDiscriminator.INSTANCE; } }
public void bindDiscriminatorValue() { if ( StringHelper.isEmpty( discriminatorValue ) ) { Value discriminator = persistentClass.getDiscriminator(); if ( discriminator == null ) { persistentClass.setDiscriminatorValue( name ); } else if ( "character".equals( discriminator.getType().getName() ) ) { throw new AnnotationException( "Using default @DiscriminatorValue for a discriminator of type CHAR is not safe" ); } else if ( "integer".equals( discriminator.getType().getName() ) ) { persistentClass.setDiscriminatorValue( String.valueOf( name.hashCode() ) ); } else { persistentClass.setDiscriminatorValue( name ); //Spec compliant } } else { //persistentClass.getDiscriminator() persistentClass.setDiscriminatorValue( discriminatorValue ); } }
public void bindDiscriminatorValue() { if ( StringHelper.isEmpty( discriminatorValue ) ) { Value discriminator = persistentClass.getDiscriminator(); if ( discriminator == null ) { persistentClass.setDiscriminatorValue( name ); } else if ( "character".equals( discriminator.getType().getName() ) ) { throw new AnnotationException( "Using default @DiscriminatorValue for a discriminator of type CHAR is not safe" ); } else if ( "integer".equals( discriminator.getType().getName() ) ) { persistentClass.setDiscriminatorValue( String.valueOf( name.hashCode() ) ); } else { persistentClass.setDiscriminatorValue( name ); //Spec compliant } } else { //persistentClass.getDiscriminator() persistentClass.setDiscriminatorValue( discriminatorValue ); } }
public ColumnBasedDiscriminator(final PersistentClass persistentClass, final SessionFactoryImplementor factory, final Column column) { Dialect dialect = factory.getServiceRegistry().getService( JdbcServices.class ).getDialect(); forced = persistentClass.isForceDiscriminator(); columnName = column.getQuotedName( dialect ); alias = column.getAlias( dialect, persistentClass.getRootTable() ); discriminatorType = persistentClass.getDiscriminator().getType() == null ? StringType.INSTANCE : persistentClass.getDiscriminator().getType(); value = value( persistentClass, discriminatorType ); sqlValue = sqlValue( persistentClass, dialect, value, discriminatorType ); subclassesByValue = subclassesByValue( persistentClass, value, discriminatorType ); needed = true; }