FileDocCategorySizeDatePackage
UniqueKey.javaAPI DocHibernate 3.2.52711Mon Oct 30 19:18:40 GMT 2006org.hibernate.mapping

UniqueKey

public class UniqueKey extends Constraint
A relational unique key constraint
author
Gavin King

Fields Summary
Constructors Summary
Methods Summary
public booleanisGenerated(org.hibernate.dialect.Dialect dialect)

		if ( dialect.supportsNotNullUnique() ) return true;
		Iterator iter = getColumnIterator();
		while ( iter.hasNext() ) {
			if ( ( (Column) iter.next() ).isNullable() ) {
				return false;
			}
		}
		return true;
	
public java.lang.StringsqlConstraintString(org.hibernate.dialect.Dialect dialect)

		StringBuffer buf = new StringBuffer( "unique (" );
		Iterator iter = getColumnIterator();
		boolean nullable = false;
		while ( iter.hasNext() ) {
			Column column = (Column) iter.next();
			if ( !nullable && column.isNullable() ) nullable = true;
			buf.append( column.getQuotedName( dialect ) );
			if ( iter.hasNext() ) buf.append( ", " );
		}
		//do not add unique constraint on DB not supporting unique and nullable columns
		return !nullable || dialect.supportsNotNullUnique() ?
				buf.append( ')" ).toString() :
				null;
	
public java.lang.StringsqlConstraintString(org.hibernate.dialect.Dialect dialect, java.lang.String constraintName, java.lang.String defaultCatalog, java.lang.String defaultSchema)

		StringBuffer buf = new StringBuffer(
				dialect.getAddPrimaryKeyConstraintString( constraintName )
		).append( '(" );
		Iterator iter = getColumnIterator();
		boolean nullable = false;
		while ( iter.hasNext() ) {
			Column column = (Column) iter.next();
			if ( !nullable && column.isNullable() ) nullable = true;
			buf.append( column.getQuotedName( dialect ) );
			if ( iter.hasNext() ) buf.append( ", " );
		}
		return !nullable || dialect.supportsNotNullUnique() ?
				StringHelper.replace( buf.append( ')" ).toString(), "primary key", "unique" ) :
				//TODO: improve this hack!
				null;
	
public java.lang.StringsqlCreateString(org.hibernate.dialect.Dialect dialect, org.hibernate.engine.Mapping p, java.lang.String defaultCatalog, java.lang.String defaultSchema)

		if ( dialect.supportsUniqueConstraintInCreateAlterTable() ) {
			return super.sqlCreateString( dialect, p, defaultCatalog, defaultSchema );
		}
		else {
			return Index.buildSqlCreateIndexString( dialect, getName(), getTable(), getColumnIterator(), true,
					defaultCatalog, defaultSchema );
		}
	
public java.lang.StringsqlDropString(org.hibernate.dialect.Dialect dialect, java.lang.String defaultCatalog, java.lang.String defaultSchema)

		if ( dialect.supportsUniqueConstraintInCreateAlterTable() ) {
			return super.sqlDropString( dialect, defaultCatalog, defaultSchema );
		}
		else {
			return Index.buildSqlDropIndexString( dialect, getTable(), getName(), defaultCatalog, defaultSchema );
		}