javax.persistence.DiscriminatorType Java Examples
The following examples show how to use
javax.persistence.DiscriminatorType.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: JPAOverriddenAnnotationReader.java From lams with GNU General Public License v2.0 | 5 votes |
private DiscriminatorColumn getDiscriminatorColumn(Element tree, XMLContext.Default defaults) { Element element = tree != null ? tree.element( "discriminator-column" ) : null; if ( element != null ) { AnnotationDescriptor ad = new AnnotationDescriptor( DiscriminatorColumn.class ); copyStringAttribute( ad, element, "name", false ); copyStringAttribute( ad, element, "column-definition", false ); String value = element.attributeValue( "discriminator-type" ); DiscriminatorType type = DiscriminatorType.STRING; if ( value != null ) { if ( "STRING".equals( value ) ) { type = DiscriminatorType.STRING; } else if ( "CHAR".equals( value ) ) { type = DiscriminatorType.CHAR; } else if ( "INTEGER".equals( value ) ) { type = DiscriminatorType.INTEGER; } else { throw new AnnotationException( "Unknown DiscrimiatorType in XML: " + value + " (" + SCHEMA_VALIDATION + ")" ); } } ad.setValue( "discriminatorType", type ); copyIntegerAttribute( ad, element, "length" ); return AnnotationFactory.create( ad ); } else if ( defaults.canUseJavaAnnotations() ) { return getPhysicalAnnotation( DiscriminatorColumn.class ); } else { return null; } }
Example #2
Source File: Ejb3DiscriminatorColumn.java From lams with GNU General Public License v2.0 | 4 votes |
public static Ejb3DiscriminatorColumn buildDiscriminatorColumn( DiscriminatorType type, DiscriminatorColumn discAnn, DiscriminatorFormula discFormulaAnn, MetadataBuildingContext context) { Ejb3DiscriminatorColumn discriminatorColumn = new Ejb3DiscriminatorColumn(); discriminatorColumn.setBuildingContext( context ); discriminatorColumn.setImplicit( true ); if ( discFormulaAnn != null ) { discriminatorColumn.setImplicit( false ); discriminatorColumn.setFormula( discFormulaAnn.value() ); } else if ( discAnn != null ) { discriminatorColumn.setImplicit( false ); if ( !BinderHelper.isEmptyAnnotationValue( discAnn.columnDefinition() ) ) { discriminatorColumn.setSqlType( discAnn.columnDefinition() ); } if ( !BinderHelper.isEmptyAnnotationValue( discAnn.name() ) ) { discriminatorColumn.setLogicalColumnName( discAnn.name() ); } discriminatorColumn.setNullable( false ); } if ( DiscriminatorType.CHAR.equals( type ) ) { discriminatorColumn.setDiscriminatorTypeName( "character" ); discriminatorColumn.setImplicit( false ); } else if ( DiscriminatorType.INTEGER.equals( type ) ) { discriminatorColumn.setDiscriminatorTypeName( "integer" ); discriminatorColumn.setImplicit( false ); } else if ( DiscriminatorType.STRING.equals( type ) || type == null ) { if ( discAnn != null ) discriminatorColumn.setLength( discAnn.length() ); discriminatorColumn.setDiscriminatorTypeName( "string" ); } else { throw new AssertionFailure( "Unknown discriminator type: " + type ); } discriminatorColumn.bind(); return discriminatorColumn; }
Example #3
Source File: AnnotationBinder.java From lams with GNU General Public License v2.0 | 4 votes |
/** * Process all discriminator-related metadata per rules for "single table" inheritance */ private static Ejb3DiscriminatorColumn processSingleTableDiscriminatorProperties( XClass clazzToProcess, MetadataBuildingContext context, InheritanceState inheritanceState, EntityBinder entityBinder) { final boolean isRoot = !inheritanceState.hasParents(); Ejb3DiscriminatorColumn discriminatorColumn = null; javax.persistence.DiscriminatorColumn discAnn = clazzToProcess.getAnnotation( javax.persistence.DiscriminatorColumn.class ); DiscriminatorType discriminatorType = discAnn != null ? discAnn.discriminatorType() : DiscriminatorType.STRING; org.hibernate.annotations.DiscriminatorFormula discFormulaAnn = clazzToProcess.getAnnotation( org.hibernate.annotations.DiscriminatorFormula.class ); if ( isRoot ) { discriminatorColumn = Ejb3DiscriminatorColumn.buildDiscriminatorColumn( discriminatorType, discAnn, discFormulaAnn, context ); } if ( discAnn != null && !isRoot ) { LOG.invalidDiscriminatorAnnotation( clazzToProcess.getName() ); } final String discriminatorValue = clazzToProcess.isAnnotationPresent( DiscriminatorValue.class ) ? clazzToProcess.getAnnotation( DiscriminatorValue.class ).value() : null; entityBinder.setDiscriminatorValue( discriminatorValue ); DiscriminatorOptions discriminatorOptions = clazzToProcess.getAnnotation( DiscriminatorOptions.class ); if ( discriminatorOptions != null) { entityBinder.setForceDiscriminator( discriminatorOptions.force() ); entityBinder.setInsertableDiscriminator( discriminatorOptions.insert() ); } return discriminatorColumn; }
Example #4
Source File: AnnotationBinder.java From lams with GNU General Public License v2.0 | 4 votes |
/** * Process all discriminator-related metadata per rules for "joined" inheritance */ private static Ejb3DiscriminatorColumn processJoinedDiscriminatorProperties( XClass clazzToProcess, MetadataBuildingContext context, InheritanceState inheritanceState, EntityBinder entityBinder) { if ( clazzToProcess.isAnnotationPresent( DiscriminatorFormula.class ) ) { throw new MappingException( "@DiscriminatorFormula on joined inheritance not supported at this time" ); } // DiscriminatorValue handling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ final DiscriminatorValue discriminatorValueAnnotation = clazzToProcess.getAnnotation( DiscriminatorValue.class ); final String discriminatorValue = discriminatorValueAnnotation != null ? clazzToProcess.getAnnotation( DiscriminatorValue.class ).value() : null; entityBinder.setDiscriminatorValue( discriminatorValue ); // DiscriminatorColumn handling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ final DiscriminatorColumn discriminatorColumnAnnotation = clazzToProcess.getAnnotation( DiscriminatorColumn.class ); if ( !inheritanceState.hasParents() ) { // we want to process the discriminator column if either: // 1) There is an explicit DiscriminatorColumn annotation && we are not told to ignore them // 2) There is not an explicit DiscriminatorColumn annotation && we are told to create them implicitly final boolean generateDiscriminatorColumn; if ( discriminatorColumnAnnotation != null ) { if ( context.getBuildingOptions().ignoreExplicitDiscriminatorsForJoinedInheritance() ) { LOG.debugf( "Ignoring explicit DiscriminatorColumn annotation on ", clazzToProcess.getName() ); generateDiscriminatorColumn = false; } else { LOG.applyingExplicitDiscriminatorColumnForJoined( clazzToProcess.getName(), AvailableSettings.IGNORE_EXPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS ); generateDiscriminatorColumn = true; } } else { if ( context.getBuildingOptions().createImplicitDiscriminatorsForJoinedInheritance() ) { LOG.debug( "Applying implicit DiscriminatorColumn using DiscriminatorColumn defaults" ); generateDiscriminatorColumn = true; } else { LOG.debug( "Ignoring implicit (absent) DiscriminatorColumn" ); generateDiscriminatorColumn = false; } } if ( generateDiscriminatorColumn ) { final DiscriminatorType discriminatorType = discriminatorColumnAnnotation != null ? discriminatorColumnAnnotation.discriminatorType() : DiscriminatorType.STRING; return Ejb3DiscriminatorColumn.buildDiscriminatorColumn( discriminatorType, discriminatorColumnAnnotation, null, context ); } } else { if ( discriminatorColumnAnnotation != null ) { LOG.invalidDiscriminatorAnnotation( clazzToProcess.getName() ); } } return null; }