Methods Summary |
---|
public AccessCallback | buildCallback(org.hibernate.engine.SessionImplementor session)
return new AccessCallback() {
public long getNextValue() {
return ( ( Number ) doWorkInNewTransaction( session ) ).longValue();
}
};
|
protected java.io.Serializable | doWorkInCurrentTransaction(java.sql.Connection conn, java.lang.String sql)
long result;
int rows;
do {
sql = select;
SQL_LOG.debug( sql );
PreparedStatement qps = conn.prepareStatement( select );
try {
ResultSet rs = qps.executeQuery();
if ( !rs.next() ) {
String err = "could not read a hi value - you need to populate the table: " + tableName;
log.error( err );
throw new IdentifierGenerationException( err );
}
result = rs.getLong( 1 );
rs.close();
}
catch ( SQLException sqle ) {
log.error( "could not read a hi value", sqle );
throw sqle;
}
finally {
qps.close();
}
sql = update;
SQL_LOG.debug( sql );
PreparedStatement ups = conn.prepareStatement( update );
try {
int increment = applyIncrementSizeToSourceValues ? incrementSize : 1;
ups.setLong( 1, result + increment );
ups.setLong( 2, result );
rows = ups.executeUpdate();
}
catch ( SQLException sqle ) {
log.error( "could not update hi value in: " + tableName, sqle );
throw sqle;
}
finally {
ups.close();
}
} while ( rows == 0 );
accessCounter++;
return new Long( result );
|
public int | getIncrementSize()
return incrementSize;
|
public java.lang.String | getName()
return tableName;
|
public int | getTimesAccessed()
return accessCounter;
|
public void | prepare(Optimizer optimizer)
applyIncrementSizeToSourceValues = optimizer.applyIncrementSizeToSourceValues();
|
public java.lang.String[] | sqlCreateStrings(org.hibernate.dialect.Dialect dialect)
return new String[] {
"create table " + tableName + " ( " + valueColumnName + " " + dialect.getTypeName( Types.BIGINT ) + " )",
"insert into " + tableName + " values ( " + initialValue + " )"
};
|
public java.lang.String[] | sqlDropStrings(org.hibernate.dialect.Dialect dialect)
StringBuffer sqlDropString = new StringBuffer().append( "drop table " );
if ( dialect.supportsIfExistsBeforeTableName() ) {
sqlDropString.append( "if exists " );
}
sqlDropString.append( tableName ).append( dialect.getCascadeConstraintsString() );
if ( dialect.supportsIfExistsAfterTableName() ) {
sqlDropString.append( " if exists" );
}
return new String[] { sqlDropString.toString() };
|