Java Code Examples for org.hibernate.sql.Update#addColumns()

The following examples show how to use org.hibernate.sql.Update#addColumns() . 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: BasicCollectionPersister.java    From cacheonix-core with GNU Lesser General Public License v2.1 6 votes vote down vote up
/**
 * Generate the SQL UPDATE that updates a row
 */
protected String generateUpdateRowString() {
	
	Update update = new Update( getDialect() )
		.setTableName( qualifiedTableName );
	
	//if ( !elementIsFormula ) {
		update.addColumns( elementColumnNames, elementColumnIsSettable );
	//}
	
	if ( hasIdentifier ) {
		update.setPrimaryKeyColumnNames( new String[]{ identifierColumnName } );
	}
	else if ( hasIndex && !indexContainsFormula ) {
		update.setPrimaryKeyColumnNames( ArrayHelper.join( keyColumnNames, indexColumnNames ) );
	}
	else {
		update.setPrimaryKeyColumnNames( ArrayHelper.join( keyColumnNames, elementColumnNames, elementColumnIsInPrimaryKey ) );
	}
	
	if ( getFactory().getSettings().isCommentsEnabled() ) {
		update.setComment( "update collection row " + getRole() );
	}
	
	return update.toStatementString();
}
 
Example 2
Source File: OneToManyPersister.java    From cacheonix-core with GNU Lesser General Public License v2.1 6 votes vote down vote up
/**
 * Generate the SQL UPDATE that updates all the foreign keys to null
 */
protected String generateDeleteString() {
	
	Update update = new Update( getDialect() )
			.setTableName( qualifiedTableName )
			.addColumns( keyColumnNames, "null" )
			.setPrimaryKeyColumnNames( keyColumnNames );
	
	if ( hasIndex && !indexContainsFormula ) update.addColumns( indexColumnNames, "null" );
	
	if ( hasWhere ) update.setWhere( sqlWhereString );
	
	if ( getFactory().getSettings().isCommentsEnabled() ) {
		update.setComment( "delete one-to-many " + getRole() );
	}
	
	return update.toStatementString();
}
 
Example 3
Source File: OneToManyPersister.java    From cacheonix-core with GNU Lesser General Public License v2.1 6 votes vote down vote up
/**
 * Generate the SQL UPDATE that updates a foreign key to a value
 */
protected String generateInsertRowString() {
	
	Update update = new Update( getDialect() )
			.setTableName( qualifiedTableName )
			.addColumns( keyColumnNames );
	
	if ( hasIndex && !indexContainsFormula ) update.addColumns( indexColumnNames );
	
	//identifier collections not supported for 1-to-many
	if ( getFactory().getSettings().isCommentsEnabled() ) {
		update.setComment( "create one-to-many row " + getRole() );
	}
	
	return update.setPrimaryKeyColumnNames( elementColumnNames )
			.toStatementString();
}
 
Example 4
Source File: OneToManyPersister.java    From cacheonix-core with GNU Lesser General Public License v2.1 6 votes vote down vote up
/**
 * Generate the SQL UPDATE that updates a particular row's foreign
 * key to null
 */
protected String generateDeleteRowString() {
	
	Update update = new Update( getDialect() )
			.setTableName( qualifiedTableName )
			.addColumns( keyColumnNames, "null" );
	
	if ( hasIndex && !indexContainsFormula ) update.addColumns( indexColumnNames, "null" );
	
	if ( getFactory().getSettings().isCommentsEnabled() ) {
		update.setComment( "delete one-to-many row " + getRole() );
	}
	
	//use a combination of foreign key columns and pk columns, since
	//the ordering of removal and addition is not guaranteed when
	//a child moves from one parent to another
	String[] rowSelectColumnNames = ArrayHelper.join(keyColumnNames, elementColumnNames);
	return update.setPrimaryKeyColumnNames( rowSelectColumnNames )
			.toStatementString();
}
 
Example 5
Source File: BasicCollectionPersister.java    From lams with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Generate the SQL UPDATE that updates a row
 */
@Override
protected String generateUpdateRowString() {
	final Update update = new Update( getDialect() )
			.setTableName( qualifiedTableName );

	//if ( !elementIsFormula ) {
	update.addColumns( elementColumnNames, elementColumnIsSettable, elementColumnWriters );
	//}

	if ( hasIdentifier ) {
		update.addPrimaryKeyColumns( new String[] {identifierColumnName} );
	}
	else if ( hasIndex && !indexContainsFormula ) {
		update.addPrimaryKeyColumns( ArrayHelper.join( keyColumnNames, indexColumnNames ) );
	}
	else {
		update.addPrimaryKeyColumns( keyColumnNames );
		update.addPrimaryKeyColumns( elementColumnNames, elementColumnIsInPrimaryKey, elementColumnWriters );
	}

	if ( getFactory().getSessionFactoryOptions().isCommentsEnabled() ) {
		update.setComment( "update collection row " + getRole() );
	}

	return update.toStatementString();
}
 
Example 6
Source File: AbstractEntityPersister.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 votes vote down vote up
/**
 * Generate the SQL that updates a row by id (and version)
 */
protected String generateUpdateString(final boolean[] includeProperty,
									  final int j,
									  final Object[] oldFields,
									  final boolean useRowId) {

	Update update = new Update( getFactory().getDialect() ).setTableName( getTableName( j ) );

	// select the correct row by either pk or rowid
	if ( useRowId ) {
		update.setPrimaryKeyColumnNames( new String[]{rowIdName} ); //TODO: eventually, rowIdName[j]
	}
	else {
		update.setPrimaryKeyColumnNames( getKeyColumns( j ) );
	}

	boolean hasColumns = false;
	for ( int i = 0; i < entityMetamodel.getPropertySpan(); i++ ) {
		if ( includeProperty[i] && isPropertyOfTable( i, j ) ) {
			// this is a property of the table, which we are updating
			update.addColumns( getPropertyColumnNames(i), propertyColumnUpdateable[i] );
			hasColumns = hasColumns || getPropertyColumnSpan( i ) > 0;
		}
	}

	if ( j == 0 && isVersioned() && entityMetamodel.getOptimisticLockMode() == Versioning.OPTIMISTIC_LOCK_VERSION ) {
		// this is the root (versioned) table, and we are using version-based
		// optimistic locking;  if we are not updating the version, also don't
		// check it (unless this is a "generated" version column)!
		if ( checkVersion( includeProperty ) ) {
			update.setVersionColumnName( getVersionColumnName() );
			hasColumns = true;
		}
	}
	else if ( entityMetamodel.getOptimisticLockMode() > Versioning.OPTIMISTIC_LOCK_VERSION && oldFields != null ) {
		// we are using "all" or "dirty" property-based optimistic locking

		boolean[] includeInWhere = entityMetamodel.getOptimisticLockMode() == Versioning.OPTIMISTIC_LOCK_ALL ?
				getPropertyUpdateability() : //optimistic-lock="all", include all updatable properties
				includeProperty; //optimistic-lock="dirty", include all properties we are updating this time

		boolean[] versionability = getPropertyVersionability();
		Type[] types = getPropertyTypes();
		for ( int i = 0; i < entityMetamodel.getPropertySpan(); i++ ) {
			boolean include = includeInWhere[i] &&
					isPropertyOfTable( i, j ) &&
					versionability[i];
			if ( include ) {
				// this property belongs to the table, and it is not specifically
				// excluded from optimistic locking by optimistic-lock="false"
				String[] propertyColumnNames = getPropertyColumnNames( i );
				boolean[] propertyNullness = types[i].toColumnNullness( oldFields[i], getFactory() );
				for ( int k=0; k<propertyNullness.length; k++ ) {
					if ( propertyNullness[k] ) {
						update.addWhereColumn( propertyColumnNames[k] );
					}
					else {
						update.addWhereColumn( propertyColumnNames[k], " is null" );
					}
				}
			}
		}

	}

	if ( getFactory().getSettings().isCommentsEnabled() ) {
		update.setComment( "update " + getEntityName() );
	}

	return hasColumns ? update.toStatementString() : null;
}