Path: blob/master/src/main/java/com/nighthawk/spring_portfolio/SQLDialect.java
113 views
package com.nighthawk.spring_portfolio;12import org.hibernate.dialect.Dialect;3import org.hibernate.dialect.function.SQLFunctionTemplate;4import org.hibernate.dialect.function.StandardSQLFunction;5import org.hibernate.dialect.function.VarArgsSQLFunction;6import org.hibernate.type.StringType;78import java.sql.Types;910/*11This Dialect is brought into project to support SQLite12*/13public class SQLDialect extends Dialect {14public SQLDialect() {15registerColumnType(Types.BIT, "integer");16registerColumnType(Types.TINYINT, "tinyint");17registerColumnType(Types.SMALLINT, "smallint");18registerColumnType(Types.INTEGER, "integer");19registerColumnType(Types.BIGINT, "bigint");20registerColumnType(Types.FLOAT, "float");21registerColumnType(Types.REAL, "real");22registerColumnType(Types.DOUBLE, "double");23registerColumnType(Types.NUMERIC, "numeric");24registerColumnType(Types.DECIMAL, "decimal");25registerColumnType(Types.CHAR, "char");26registerColumnType(Types.VARCHAR, "varchar");27registerColumnType(Types.LONGVARCHAR, "longvarchar");28registerColumnType(Types.DATE, "date");29registerColumnType(Types.TIME, "time");30registerColumnType(Types.TIMESTAMP, "timestamp");31registerColumnType(Types.BINARY, "blob");32registerColumnType(Types.VARBINARY, "blob");33registerColumnType(Types.LONGVARBINARY, "blob");34// registerColumnType(Types.NULL, "null");35registerColumnType(Types.BLOB, "blob");36registerColumnType(Types.CLOB, "clob");37registerColumnType(Types.BOOLEAN, "integer");3839registerFunction("concat", new VarArgsSQLFunction(StringType.INSTANCE, "", "||", ""));40registerFunction("mod", new SQLFunctionTemplate(StringType.INSTANCE, "?1 % ?2"));41registerFunction("substr", new StandardSQLFunction("substr", StringType.INSTANCE));42registerFunction("substring", new StandardSQLFunction("substr", StringType.INSTANCE));43}4445public boolean supportsIdentityColumns() {46return true;47}4849public boolean hasDataTypeInIdentityColumn() {50return false; // As specify in NHibernate dialect51}5253public String getIdentityColumnString() {54// return "integer primary key autoincrement";55return "integer";56}5758public String getIdentitySelectString() {59return "select last_insert_rowid()";60}6162public boolean supportsLimit() {63return true;64}6566protected String getLimitString(String query, boolean hasOffset) {67return new StringBuffer(query.length() + 20).append(query).append(hasOffset ? " limit ? offset ?" : " limit ?")68.toString();69}7071public boolean supportsTemporaryTables() {72return true;73}7475public String getCreateTemporaryTableString() {76return "create temporary table if not exists";77}7879public boolean dropTemporaryTableAfterUse() {80return false;81}8283public boolean supportsCurrentTimestampSelection() {84return true;85}8687public boolean isCurrentTimestampSelectStringCallable() {88return false;89}9091public String getCurrentTimestampSelectString() {92return "select current_timestamp";93}9495public boolean supportsUnionAll() {96return true;97}9899public boolean hasAlterTable() {100return false; // As specify in NHibernate dialect101}102103public boolean dropConstraints() {104return false;105}106107public String getAddColumnString() {108return "add column";109}110111public String getForUpdateString() {112return "";113}114115public boolean supportsOuterJoinForUpdate() {116return false;117}118119public String getDropForeignKeyString() {120throw new UnsupportedOperationException("No drop foreign key syntax supported by SQLiteDialect");121}122123public String getAddForeignKeyConstraintString(String constraintName, String[] foreignKey, String referencedTable,124String[] primaryKey, boolean referencesPrimaryKey) {125throw new UnsupportedOperationException("No add foreign key syntax supported by SQLiteDialect");126}127128public String getAddPrimaryKeyConstraintString(String constraintName) {129throw new UnsupportedOperationException("No add primary key syntax supported by SQLiteDialect");130}131132public boolean supportsIfExistsBeforeTableName() {133return true;134}135136public boolean supportsCascadeDelete() {137return false;138}139}140141