HHH-9017 correct HSQL pooled sequences

This commit is contained in:
Brett Meyer 2014-03-04 09:55:40 -05:00
parent 9f927ba3ac
commit 9b57337a85
1 changed files with 17 additions and 0 deletions

View File

@ -29,6 +29,7 @@ import java.sql.Types;
import org.hibernate.JDBCException; import org.hibernate.JDBCException;
import org.hibernate.LockMode; import org.hibernate.LockMode;
import org.hibernate.MappingException;
import org.hibernate.StaleObjectStateException; import org.hibernate.StaleObjectStateException;
import org.hibernate.cfg.Environment; import org.hibernate.cfg.Environment;
import org.hibernate.dialect.function.AvgWithArgumentCastFunction; import org.hibernate.dialect.function.AvgWithArgumentCastFunction;
@ -312,11 +313,27 @@ public class HSQLDialect extends Dialect {
return true; return true;
} }
/**
* HSQL will start with 0, by default. In order for Hibernate to know that this not transient,
* manually start with 1.
*/
@Override @Override
protected String getCreateSequenceString(String sequenceName) { protected String getCreateSequenceString(String sequenceName) {
return "create sequence " + sequenceName + " start with 1"; return "create sequence " + sequenceName + " start with 1";
} }
/**
* Because of the overridden {@link #getCreateSequenceString(String)}, we must also override
* {@link #getCreateSequenceString(String, int, int)} to prevent 2 instances of "start with".
*/
@Override
protected String getCreateSequenceString(String sequenceName, int initialValue, int incrementSize) throws MappingException {
if ( supportsPooledSequences() ) {
return "create sequence " + sequenceName + " start with " + initialValue + " increment by " + incrementSize;
}
throw new MappingException( getClass().getName() + " does not support pooled sequences" );
}
@Override @Override
protected String getDropSequenceString(String sequenceName) { protected String getDropSequenceString(String sequenceName) {
return "drop sequence " + sequenceName; return "drop sequence " + sequenceName;