Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
B-G101
GitHub Repository: B-G101/SPRING-CSA
Path: blob/master/src/main/java/com/nighthawk/spring_portfolio/SQLDialect.java
113 views
1
package com.nighthawk.spring_portfolio;
2
3
import org.hibernate.dialect.Dialect;
4
import org.hibernate.dialect.function.SQLFunctionTemplate;
5
import org.hibernate.dialect.function.StandardSQLFunction;
6
import org.hibernate.dialect.function.VarArgsSQLFunction;
7
import org.hibernate.type.StringType;
8
9
import java.sql.Types;
10
11
/*
12
This Dialect is brought into project to support SQLite
13
*/
14
public class SQLDialect extends Dialect {
15
public SQLDialect() {
16
registerColumnType(Types.BIT, "integer");
17
registerColumnType(Types.TINYINT, "tinyint");
18
registerColumnType(Types.SMALLINT, "smallint");
19
registerColumnType(Types.INTEGER, "integer");
20
registerColumnType(Types.BIGINT, "bigint");
21
registerColumnType(Types.FLOAT, "float");
22
registerColumnType(Types.REAL, "real");
23
registerColumnType(Types.DOUBLE, "double");
24
registerColumnType(Types.NUMERIC, "numeric");
25
registerColumnType(Types.DECIMAL, "decimal");
26
registerColumnType(Types.CHAR, "char");
27
registerColumnType(Types.VARCHAR, "varchar");
28
registerColumnType(Types.LONGVARCHAR, "longvarchar");
29
registerColumnType(Types.DATE, "date");
30
registerColumnType(Types.TIME, "time");
31
registerColumnType(Types.TIMESTAMP, "timestamp");
32
registerColumnType(Types.BINARY, "blob");
33
registerColumnType(Types.VARBINARY, "blob");
34
registerColumnType(Types.LONGVARBINARY, "blob");
35
// registerColumnType(Types.NULL, "null");
36
registerColumnType(Types.BLOB, "blob");
37
registerColumnType(Types.CLOB, "clob");
38
registerColumnType(Types.BOOLEAN, "integer");
39
40
registerFunction("concat", new VarArgsSQLFunction(StringType.INSTANCE, "", "||", ""));
41
registerFunction("mod", new SQLFunctionTemplate(StringType.INSTANCE, "?1 % ?2"));
42
registerFunction("substr", new StandardSQLFunction("substr", StringType.INSTANCE));
43
registerFunction("substring", new StandardSQLFunction("substr", StringType.INSTANCE));
44
}
45
46
public boolean supportsIdentityColumns() {
47
return true;
48
}
49
50
public boolean hasDataTypeInIdentityColumn() {
51
return false; // As specify in NHibernate dialect
52
}
53
54
public String getIdentityColumnString() {
55
// return "integer primary key autoincrement";
56
return "integer";
57
}
58
59
public String getIdentitySelectString() {
60
return "select last_insert_rowid()";
61
}
62
63
public boolean supportsLimit() {
64
return true;
65
}
66
67
protected String getLimitString(String query, boolean hasOffset) {
68
return new StringBuffer(query.length() + 20).append(query).append(hasOffset ? " limit ? offset ?" : " limit ?")
69
.toString();
70
}
71
72
public boolean supportsTemporaryTables() {
73
return true;
74
}
75
76
public String getCreateTemporaryTableString() {
77
return "create temporary table if not exists";
78
}
79
80
public boolean dropTemporaryTableAfterUse() {
81
return false;
82
}
83
84
public boolean supportsCurrentTimestampSelection() {
85
return true;
86
}
87
88
public boolean isCurrentTimestampSelectStringCallable() {
89
return false;
90
}
91
92
public String getCurrentTimestampSelectString() {
93
return "select current_timestamp";
94
}
95
96
public boolean supportsUnionAll() {
97
return true;
98
}
99
100
public boolean hasAlterTable() {
101
return false; // As specify in NHibernate dialect
102
}
103
104
public boolean dropConstraints() {
105
return false;
106
}
107
108
public String getAddColumnString() {
109
return "add column";
110
}
111
112
public String getForUpdateString() {
113
return "";
114
}
115
116
public boolean supportsOuterJoinForUpdate() {
117
return false;
118
}
119
120
public String getDropForeignKeyString() {
121
throw new UnsupportedOperationException("No drop foreign key syntax supported by SQLiteDialect");
122
}
123
124
public String getAddForeignKeyConstraintString(String constraintName, String[] foreignKey, String referencedTable,
125
String[] primaryKey, boolean referencesPrimaryKey) {
126
throw new UnsupportedOperationException("No add foreign key syntax supported by SQLiteDialect");
127
}
128
129
public String getAddPrimaryKeyConstraintString(String constraintName) {
130
throw new UnsupportedOperationException("No add primary key syntax supported by SQLiteDialect");
131
}
132
133
public boolean supportsIfExistsBeforeTableName() {
134
return true;
135
}
136
137
public boolean supportsCascadeDelete() {
138
return false;
139
}
140
}
141