package com.how2java.sqlite; import java.sql.SQLException; import java.sql.Types; import org.hibernate.JDBCException; import org.hibernate.ScrollMode; import org.hibernate.dialect.Dialect; import org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction; import org.hibernate.dialect.function.NoArgSQLFunction; import org.hibernate.dialect.function.SQLFunction; import org.hibernate.dialect.function.SQLFunctionTemplate; import org.hibernate.dialect.function.StandardSQLFunction; import org.hibernate.dialect.function.VarArgsSQLFunction; import org.hibernate.dialect.identity.IdentityColumnSupport; import org.hibernate.dialect.pagination.AbstractLimitHandler; import org.hibernate.dialect.pagination.LimitHandler; import org.hibernate.dialect.pagination.LimitHelper; import org.hibernate.dialect.unique.DefaultUniqueDelegate; import org.hibernate.dialect.unique.UniqueDelegate; import org.hibernate.engine.spi.RowSelection; import org.hibernate.exception.DataException; import org.hibernate.exception.JDBCConnectionException; import org.hibernate.exception.LockAcquisitionException; import org.hibernate.exception.spi.SQLExceptionConversionDelegate; import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtracter; import org.hibernate.exception.spi.ViolatedConstraintNameExtracter; import org.hibernate.internal.util.JdbcExceptionHelper; import org.hibernate.mapping.Column; import org.hibernate.type.StandardBasicTypes; public class SQLiteDialect extends Dialect {
private final UniqueDelegate uniqueDelegate; public SQLiteDialect() {
registerColumnType(Types.BIT, "boolean" ); registerColumnType(Types.DECIMAL, "decimal" ); registerColumnType(Types.CHAR, "char" ); registerColumnType(Types.LONGVARCHAR, "longvarchar" ); registerColumnType(Types.TIMESTAMP, "datetime" ); registerColumnType(Types.BINARY, "blob" ); registerColumnType(Types.VARBINARY, "blob" ); registerColumnType(Types.LONGVARBINARY, "blob" ); registerFunction( "concat" , new VarArgsSQLFunction(StandardBasicTypes.STRING, "" , "||" , "" )); registerFunction( "mod" , new SQLFunctionTemplate(StandardBasicTypes.INTEGER, "?1 % ?2" )); registerFunction( "quote" , new StandardSQLFunction( "quote" , StandardBasicTypes.STRING)); registerFunction( "random" , new NoArgSQLFunction( "random" , StandardBasicTypes.INTEGER)); registerFunction( "round" , new StandardSQLFunction( "round" )); registerFunction( "substr" , new StandardSQLFunction( "substr" , StandardBasicTypes.STRING)); registerFunction( "trim" , new AbstractAnsiTrimEmulationFunction() {
@Override protected SQLFunction resolveBothSpaceTrimFunction() {
return new SQLFunctionTemplate(StandardBasicTypes.STRING, "trim(?1)" ); } @Override protected SQLFunction resolveBothSpaceTrimFromFunction() {
return new SQLFunctionTemplate(StandardBasicTypes.STRING, "trim(?2)" ); |