javax.persistence.SecondaryTable Java Examples

The following examples show how to use javax.persistence.SecondaryTable. 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: EntityBinder.java    From lams with GNU General Public License v2.0 6 votes vote down vote up
private void setFKNameIfDefined(Join join) {
	// just awful..

	org.hibernate.annotations.Table matchingTable = findMatchingComplimentTableAnnotation( join );
	if ( matchingTable != null && !BinderHelper.isEmptyAnnotationValue( matchingTable.foreignKey().name() ) ) {
		( (SimpleValue) join.getKey() ).setForeignKeyName( matchingTable.foreignKey().name() );
	}
	else {
		javax.persistence.SecondaryTable jpaSecondaryTable = findMatchingSecondaryTable( join );
		if ( jpaSecondaryTable != null ) {
			if ( jpaSecondaryTable.foreignKey().value() == ConstraintMode.NO_CONSTRAINT ) {
				( (SimpleValue) join.getKey() ).setForeignKeyName( "none" );
			}
			else {
				( (SimpleValue) join.getKey() ).setForeignKeyName( StringHelper.nullIfEmpty( jpaSecondaryTable.foreignKey().name() ) );
				( (SimpleValue) join.getKey() ).setForeignKeyDefinition( StringHelper.nullIfEmpty( jpaSecondaryTable.foreignKey().foreignKeyDefinition() ) );
			}
		}
	}
}
 
Example #2
Source File: EntityBinder.java    From lams with GNU General Public License v2.0 6 votes vote down vote up
private SecondaryTable findMatchingSecondaryTable(Join join) {
	final String nameToMatch = join.getTable().getQuotedName();

	SecondaryTable secondaryTable = annotatedClass.getAnnotation( SecondaryTable.class );
	if ( secondaryTable != null && nameToMatch.equals( secondaryTable.name() ) ) {
		return secondaryTable;
	}

	SecondaryTables secondaryTables = annotatedClass.getAnnotation( SecondaryTables.class );
	if ( secondaryTables != null ) {
		for ( SecondaryTable secondaryTablesEntry : secondaryTables.value() ) {
			if ( secondaryTablesEntry != null && nameToMatch.equals( secondaryTablesEntry.name() ) ) {
				return secondaryTablesEntry;
			}
		}
	}

	return null;
}
 
Example #3
Source File: JPAOverriddenAnnotationReader.java    From lams with GNU General Public License v2.0 5 votes vote down vote up
private void overridesDefaultInSecondaryTable(
		SecondaryTable secTableAnn, XMLContext.Default defaults, List<SecondaryTable> secondaryTables
) {
	if ( secTableAnn != null ) {
		//handle default values
		if ( StringHelper.isNotEmpty( defaults.getCatalog() )
				|| StringHelper.isNotEmpty( defaults.getSchema() ) ) {
			AnnotationDescriptor annotation = new AnnotationDescriptor( SecondaryTable.class );
			annotation.setValue( "name", secTableAnn.name() );
			annotation.setValue( "schema", secTableAnn.schema() );
			annotation.setValue( "catalog", secTableAnn.catalog() );
			annotation.setValue( "uniqueConstraints", secTableAnn.uniqueConstraints() );
			annotation.setValue( "pkJoinColumns", secTableAnn.pkJoinColumns() );
			if ( StringHelper.isEmpty( (String) annotation.valueOf( "schema" ) )
					&& StringHelper.isNotEmpty( defaults.getSchema() ) ) {
				annotation.setValue( "schema", defaults.getSchema() );
			}
			if ( StringHelper.isEmpty( (String) annotation.valueOf( "catalog" ) )
					&& StringHelper.isNotEmpty( defaults.getCatalog() ) ) {
				annotation.setValue( "catalog", defaults.getCatalog() );
			}
			secondaryTables.add( AnnotationFactory.create( annotation ) );
		}
		else {
			secondaryTables.add( secTableAnn );
		}
	}
}
 
Example #4
Source File: EntityBinder.java    From lams with GNU General Public License v2.0 5 votes vote down vote up
public void firstLevelSecondaryTablesBinding(
		SecondaryTable secTable, SecondaryTables secTables
) {
	if ( secTables != null ) {
		//loop through it
		for (SecondaryTable tab : secTables.value()) {
			addJoin( tab, null, null, false );
		}
	}
	else {
		if ( secTable != null ) addJoin( secTable, null, null, false );
	}
}
 
Example #5
Source File: DbUtil.java    From cosmic with Apache License 2.0 5 votes vote down vote up
public static final SecondaryTable[] getSecondaryTables(final AnnotatedElement clazz) {
    SecondaryTable[] sts = null;
    final SecondaryTable stAnnotation = clazz.getAnnotation(SecondaryTable.class);
    if (stAnnotation == null) {
        final SecondaryTables stsAnnotation = clazz.getAnnotation(SecondaryTables.class);
        sts = stsAnnotation != null ? stsAnnotation.value() : new SecondaryTable[0];
    } else {
        sts = new SecondaryTable[]{stAnnotation};
    }

    return sts;
}
 
Example #6
Source File: DbUtil.java    From cloudstack with Apache License 2.0 5 votes vote down vote up
public static final SecondaryTable[] getSecondaryTables(AnnotatedElement clazz) {
    SecondaryTable[] sts = null;
    SecondaryTable stAnnotation = clazz.getAnnotation(SecondaryTable.class);
    if (stAnnotation == null) {
        SecondaryTables stsAnnotation = clazz.getAnnotation(SecondaryTables.class);
        sts = stsAnnotation != null ? stsAnnotation.value() : new SecondaryTable[0];
    } else {
        sts = new SecondaryTable[] {stAnnotation};
    }

    return sts;
}
 
Example #7
Source File: JPAOverriddenAnnotationReader.java    From lams with GNU General Public License v2.0 4 votes vote down vote up
private SecondaryTables getSecondaryTables(Element tree, XMLContext.Default defaults) {
	List<Element> elements = tree == null ?
			new ArrayList<>() :
			(List<Element>) tree.elements( "secondary-table" );
	List<SecondaryTable> secondaryTables = new ArrayList<>( 3 );
	for ( Element element : elements ) {
		AnnotationDescriptor annotation = new AnnotationDescriptor( SecondaryTable.class );
		copyStringAttribute( annotation, element, "name", false );
		copyStringAttribute( annotation, element, "catalog", false );
		if ( StringHelper.isNotEmpty( defaults.getCatalog() )
				&& StringHelper.isEmpty( (String) annotation.valueOf( "catalog" ) ) ) {
			annotation.setValue( "catalog", defaults.getCatalog() );
		}
		copyStringAttribute( annotation, element, "schema", false );
		if ( StringHelper.isNotEmpty( defaults.getSchema() )
				&& StringHelper.isEmpty( (String) annotation.valueOf( "schema" ) ) ) {
			annotation.setValue( "schema", defaults.getSchema() );
		}
		buildUniqueConstraints( annotation, element );
		buildIndex( annotation, element );
		annotation.setValue( "pkJoinColumns", buildPrimaryKeyJoinColumns( element ) );
		secondaryTables.add( AnnotationFactory.create( annotation ) );
	}
	/*
	 * You can't have both secondary table in XML and Java,
	 * since there would be no way to "remove" a secondary table
	 */
	if ( secondaryTables.size() == 0 && defaults.canUseJavaAnnotations() ) {
		SecondaryTable secTableAnn = getPhysicalAnnotation( SecondaryTable.class );
		overridesDefaultInSecondaryTable( secTableAnn, defaults, secondaryTables );
		SecondaryTables secTablesAnn = getPhysicalAnnotation( SecondaryTables.class );
		if ( secTablesAnn != null ) {
			for ( SecondaryTable table : secTablesAnn.value() ) {
				overridesDefaultInSecondaryTable( table, defaults, secondaryTables );
			}
		}
	}
	if ( secondaryTables.size() > 0 ) {
		AnnotationDescriptor descriptor = new AnnotationDescriptor( SecondaryTables.class );
		descriptor.setValue( "value", secondaryTables.toArray( new SecondaryTable[secondaryTables.size()] ) );
		return AnnotationFactory.create( descriptor );
	}
	else {
		return null;
	}
}