类org.hibernate.mapping.UniqueKey源码实例Demo

下面列出了怎么用org.hibernate.mapping.UniqueKey的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: lams   文件: DefaultUniqueDelegate.java
protected String uniqueConstraintSql(UniqueKey uniqueKey) {
	final StringBuilder sb = new StringBuilder();
	sb.append( "unique (" );
	final Iterator<org.hibernate.mapping.Column> columnIterator = uniqueKey.columnIterator();
	while ( columnIterator.hasNext() ) {
		final org.hibernate.mapping.Column column = columnIterator.next();
		sb.append( column.getQuotedName( dialect ) );
		if ( uniqueKey.getColumnOrderMap().containsKey( column ) ) {
			sb.append( " " ).append( uniqueKey.getColumnOrderMap().get( column ) );
		}
		if ( columnIterator.hasNext() ) {
			sb.append( ", " );
		}
	}

	return sb.append( ')' ).toString();
}
 
源代码2 项目: lams   文件: DefaultUniqueDelegate.java
@Override
public String getAlterTableToDropUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) {
	final JdbcEnvironment jdbcEnvironment = metadata.getDatabase().getJdbcEnvironment();

	final String tableName = jdbcEnvironment.getQualifiedObjectNameFormatter().format(
			uniqueKey.getTable().getQualifiedTableName(),
			dialect
	);

	final StringBuilder buf = new StringBuilder( dialect.getAlterTableString(tableName) );
	buf.append( getDropUnique() );
	if ( dialect.supportsIfExistsBeforeConstraintName() ) {
		buf.append( "if exists " );
	}
	buf.append( dialect.quote( uniqueKey.getName() ) );
	if ( dialect.supportsIfExistsAfterConstraintName() ) {
		buf.append( " if exists" );
	}
	return buf.toString();
}
 
源代码3 项目: lams   文件: DB2UniqueDelegate.java
@Override
public String getAlterTableToAddUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) {
	if ( hasNullable( uniqueKey ) ) {
		return org.hibernate.mapping.Index.buildSqlCreateIndexString(
				dialect,
				uniqueKey.getName(),
				uniqueKey.getTable(),
				uniqueKey.columnIterator(),
				uniqueKey.getColumnOrderMap(),
				true,
				metadata
		);
	}
	else {
		return super.getAlterTableToAddUniqueKeyCommand( uniqueKey, metadata );
	}
}
 
/**
 * Processes the columns of the table and creates Unique Constraints for columns
 * annotated with @Column(unique = true).
 */
private static void initializeUniqueConstraints(Table table) {
  Iterator<Column> colIterator = table.getColumnIterator();
  while (colIterator.hasNext()) {
    Column col = colIterator.next();
    if (col.isUnique()) {
      String name = Constraint.generateName("UK_", table, col);
      UniqueKey uk = table.getOrCreateUniqueKey(name);
      uk.addColumn(col);
    }
  }
}
 
private Set<String> getTableIndices(Table table) {
  Set<String> tableIndices = new HashSet<>();

  Iterator<Index> indexIterator = table.getIndexIterator();
  while (indexIterator.hasNext()) {
    tableIndices.add(indexIterator.next().getName());
  }

  Iterator<UniqueKey> keyIterator = table.getUniqueKeyIterator();
  while (keyIterator.hasNext()) {
    tableIndices.add(keyIterator.next().getName());
  }

  return tableIndices;
}
 
源代码6 项目: lams   文件: StandardUniqueKeyExporter.java
@Override
public String[] getSqlCreateStrings(Constraint constraint, Metadata metadata) {
	return new String[] {
			dialect.getUniqueDelegate().getAlterTableToAddUniqueKeyCommand(
					(UniqueKey) constraint,
					metadata
			)
	};
}
 
源代码7 项目: lams   文件: StandardUniqueKeyExporter.java
@Override
public String[] getSqlDropStrings(Constraint constraint, Metadata metadata) {
	return new String[] {
			dialect.getUniqueDelegate().getAlterTableToDropUniqueKeyCommand(
					(UniqueKey) constraint,
					metadata
			)
	};
}
 
源代码8 项目: lams   文件: DefaultUniqueDelegate.java
@Override
public String getAlterTableToAddUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) {
	final JdbcEnvironment jdbcEnvironment = metadata.getDatabase().getJdbcEnvironment();

	final String tableName = jdbcEnvironment.getQualifiedObjectNameFormatter().format(
			uniqueKey.getTable().getQualifiedTableName(),
			dialect
	);

	final String constraintName = dialect.quote( uniqueKey.getName() );
	return dialect.getAlterTableString( tableName )
			+ " add constraint " + constraintName + " " + uniqueConstraintSql( uniqueKey );
}
 
源代码9 项目: lams   文件: InformixUniqueDelegate.java
@Override
public String getAlterTableToAddUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) {
	// Do this here, rather than allowing UniqueKey/Constraint to do it.
	// We need full, simplified control over whether or not it happens.
	final String tableName = metadata.getDatabase().getJdbcEnvironment().getQualifiedObjectNameFormatter().format(
			uniqueKey.getTable().getQualifiedTableName(),
			metadata.getDatabase().getJdbcEnvironment().getDialect()
	);
	final String constraintName = dialect.quote( uniqueKey.getName() );
	return dialect.getAlterTableString( tableName )
			+ " add constraint " + uniqueConstraintSql( uniqueKey ) + " constraint " + constraintName;
}
 
源代码10 项目: lams   文件: DB2UniqueDelegate.java
@Override
public String getAlterTableToDropUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) {
	if ( hasNullable( uniqueKey ) ) {
		return org.hibernate.mapping.Index.buildSqlDropIndexString(
				uniqueKey.getName(),
				metadata.getDatabase().getJdbcEnvironment().getQualifiedObjectNameFormatter().format(
						uniqueKey.getTable().getQualifiedTableName(),
						metadata.getDatabase().getJdbcEnvironment().getDialect()
				)
		);
	}
	else {
		return super.getAlterTableToDropUniqueKeyCommand( uniqueKey, metadata );
	}
}
 
源代码11 项目: lams   文件: DB2UniqueDelegate.java
private boolean hasNullable(org.hibernate.mapping.UniqueKey uniqueKey) {
	final Iterator<org.hibernate.mapping.Column> iter = uniqueKey.columnIterator();
	while ( iter.hasNext() ) {
		if ( iter.next().isNullable() ) {
			return true;
		}
	}
	return false;
}
 
@Override
public String getAlterTableToAddUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) {
  return Index.buildSqlCreateIndexString(
      dialect, uniqueKey.getName(), uniqueKey.getTable(), uniqueKey.columnIterator(),
      uniqueKey.getColumnOrderMap(), true, metadata);
}
 
@Override
public String getAlterTableToDropUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) {
  StringBuilder buf = new StringBuilder("DROP INDEX ");
  buf.append(dialect.quote(uniqueKey.getName()));
  return buf.toString();
}
 
源代码14 项目: lams   文件: AbstractSchemaMigrator.java
protected void applyUniqueKeys(
		Table table,
		TableInformation tableInfo,
		Dialect dialect,
		Metadata metadata,
		Formatter formatter,
		ExecutionOptions options,
		GenerationTarget... targets) {
	if ( uniqueConstraintStrategy == null ) {
		uniqueConstraintStrategy = determineUniqueConstraintSchemaUpdateStrategy( metadata );
	}

	if ( uniqueConstraintStrategy != UniqueConstraintSchemaUpdateStrategy.SKIP ) {
		final Exporter<Constraint> exporter = dialect.getUniqueKeyExporter();

		final Iterator ukItr = table.getUniqueKeyIterator();
		while ( ukItr.hasNext() ) {
			final UniqueKey uniqueKey = (UniqueKey) ukItr.next();
			// Skip if index already exists. Most of the time, this
			// won't work since most Dialects use Constraints. However,
			// keep it for the few that do use Indexes.
			IndexInformation indexInfo = null;
			if ( tableInfo != null && StringHelper.isNotEmpty( uniqueKey.getName() ) ) {
				indexInfo = tableInfo.getIndex( Identifier.toIdentifier( uniqueKey.getName() ) );
			}
			if ( indexInfo == null ) {
				if ( uniqueConstraintStrategy == UniqueConstraintSchemaUpdateStrategy.DROP_RECREATE_QUIETLY ) {
					applySqlStrings(
							true,
							exporter.getSqlDropStrings( uniqueKey, metadata ),
							formatter,
							options,
							targets
					);
				}

				applySqlStrings(
						true,
						exporter.getSqlCreateStrings( uniqueKey, metadata ),
						formatter,
						options,
						targets
				);
			}
		}
	}
}
 
源代码15 项目: lams   文件: ModelBinder.java
@Override
public void process() {
	log.debugf( "Binding natural-id UniqueKey for entity : " + entityBinding.getEntityName() );

	final List<Identifier> columnNames = new ArrayList<Identifier>();

	final UniqueKey uk = new UniqueKey();
	uk.setTable( entityBinding.getTable() );
	for ( Property attributeBinding : attributeBindings ) {
		final Iterator itr = attributeBinding.getColumnIterator();
		while ( itr.hasNext() ) {
			final Object selectable = itr.next();
			if ( Column.class.isInstance( selectable ) ) {
				final Column column = (Column) selectable;
				uk.addColumn( column );
				columnNames.add(
						mappingDocument.getMetadataCollector().getDatabase().toIdentifier( column.getQuotedName() )
				);
			}
		}
		uk.addColumns( attributeBinding.getColumnIterator() );
	}

	final Identifier ukName = mappingDocument.getBuildingOptions().getImplicitNamingStrategy().determineUniqueKeyName(
			new ImplicitUniqueKeyNameSource() {
				@Override
				public Identifier getTableName() {
					return entityBinding.getTable().getNameIdentifier();
				}

				@Override
				public List<Identifier> getColumnNames() {
					return columnNames;
				}

				@Override
				public MetadataBuildingContext getBuildingContext() {
					return mappingDocument;
				}

				@Override
				public Identifier getUserProvidedIdentifier() {
					return uk.getName() != null ? Identifier.toIdentifier( uk.getName() ) : null;
				}
			}
	);
	uk.setName( ukName.render( mappingDocument.getMetadataCollector().getDatabase().getDialect() ) );

	entityBinding.getTable().addUniqueKey( uk );
}
 
源代码16 项目: lams   文件: UniqueDelegate.java
/**
 * Get the SQL ALTER TABLE command to be used to create the given UniqueKey.
 *
 * @param uniqueKey The UniqueKey instance.  Contains all information about the columns
 * @param metadata Access to the bootstrap mapping information
 *
 * @return The ALTER TABLE command
 */
public String getAlterTableToAddUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata);
 
源代码17 项目: lams   文件: UniqueDelegate.java
/**
 * Get the SQL ALTER TABLE command to be used to drop the given UniqueKey.
 *
 * @param uniqueKey The UniqueKey instance.  Contains all information about the columns
 * @param metadata Access to the bootstrap mapping information
 *
 * @return The ALTER TABLE command
 */
public String getAlterTableToDropUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata);
 
 类所在包
 类方法
 同包方法