import java.sql.Types;
import org.hibernate.dialect.Dialect;
public class MayflyDialect extends Dialect {
public MayflyDialect() {
super();
// registerColumnType( Types.BIT, "bit" );
registerColumnType( Types.BIGINT, "bigint" );
registerColumnType( Types.SMALLINT, "smallint" );
registerColumnType( Types.TINYINT, "tinyint" );
registerColumnType( Types.INTEGER, "integer" );
// registerColumnType( Types.CHAR, "char(1)" );
registerColumnType( Types.VARCHAR, "varchar($l)" );
// registerColumnType( Types.FLOAT, "float" );
// registerColumnType( Types.DOUBLE, "double" );
registerColumnType( Types.DATE, "date" );
// registerColumnType( Types.TIME, "time" );
registerColumnType( Types.TIMESTAMP, "timestamp" );
// registerColumnType( Types.VARBINARY, "varbinary($l)" );
// registerColumnType( Types.NUMERIC, "numeric($p,$s)" );
registerColumnType( Types.BLOB, "blob" );
registerColumnType( Types.CLOB, "text" );
}
@Override
public boolean supportsIdentityColumns() {
return true;
}
@Override
public String getIdentityColumnString() {
return "auto_increment not null";
}
@Override
public String getIdentitySelectString() {
return "call identity()";
}
@Override
public String getIdentityInsertString() {
return "default";
}
// Might need this, and the related
// things like supportsSequences(), to be able to insert
// into a table with an auto-increment column.
// @Override
// public Class getNativeIdentifierGeneratorClass() {
// return SequenceGenerator.class;
// }
@Override
public boolean supportsLimit() {
return true;
}
@Override
public boolean supportsLimitOffset() {
return true;
}
@Override
public boolean supportsVariableLimit() {
return true;
}
@Override
public String getLimitString(String sql, boolean hasOffset) {
return new StringBuffer( sql.length()+20 )
.append(sql)
.append(hasOffset ? " limit ? offset ?" : " limit ?")
.toString();
}
}