Author: steve.ebersole(a)jboss.com
Date: 2009-06-01 11:17:56 -0400 (Mon, 01 Jun 2009)
New Revision: 16644
Modified:
core/branches/Branch_3_3/core/src/main/java/org/hibernate/dialect/H2Dialect.java
Log:
HHH-3401 - H2 Database Dialect Fixes
Modified:
core/branches/Branch_3_3/core/src/main/java/org/hibernate/dialect/H2Dialect.java
===================================================================
---
core/branches/Branch_3_3/core/src/main/java/org/hibernate/dialect/H2Dialect.java 2009-06-01
15:14:58 UTC (rev 16643)
+++
core/branches/Branch_3_3/core/src/main/java/org/hibernate/dialect/H2Dialect.java 2009-06-01
15:17:56 UTC (rev 16644)
@@ -20,7 +20,6 @@
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
- *
*/
package org.hibernate.dialect;
@@ -40,30 +39,32 @@
* A dialect compatible with the H2 database.
*
* @author Thomas Mueller
- *
*/
public class H2Dialect extends Dialect {
- private String querySequenceString;
- public H2Dialect() {
- super();
-
- querySequenceString = "select sequence_name from
information_schema.sequences";
- try {
- // HHH-2300
- Class constants = ReflectHelper.classForName(
"org.h2.engine.Constants" );
- Integer build = (Integer)constants.getDeclaredField("BUILD_ID"
).get(null);
- int buildid = build.intValue();
- if(buildid < 32) {
- querySequenceString = "select name from
information_schema.sequences";
- }
- } catch(Throwable e) {
- // ignore (probably H2 not in the classpath)
- }
+ private String querySequenceString;
+
+ public H2Dialect() {
+ super();
+
+ querySequenceString = "select sequence_name from
information_schema.sequences";
+ try {
+ // HHH-2300
+ Class constants = ReflectHelper.classForName( "org.h2.engine.Constants" );
+ Integer build = ( Integer ) constants.getDeclaredField( "BUILD_ID" ).get(
null );
+ int buildid = build.intValue();
+ if ( buildid < 32 ) {
+ querySequenceString = "select name from information_schema.sequences";
+ }
+ }
+ catch ( Throwable e ) {
+ // ignore (probably H2 not in the classpath)
+ }
+
registerColumnType(Types.BOOLEAN, "boolean");
registerColumnType(Types.BIGINT, "bigint");
registerColumnType(Types.BINARY, "binary");
- registerColumnType(Types.BIT, "bit");
+ registerColumnType(Types.BIT, "boolean");
registerColumnType(Types.CHAR, "char($l)");
registerColumnType(Types.DATE, "date");
registerColumnType(Types.DECIMAL, "decimal($p,$s)");
@@ -165,7 +166,7 @@
// registerFunction("minute", new
StandardSQLFunction("minute", Hibernate.INTEGER));
// registerFunction("month", new StandardSQLFunction("month",
Hibernate.INTEGER));
registerFunction("monthname", new
StandardSQLFunction("monthname", Hibernate.STRING));
- registerFunction("quater", new StandardSQLFunction("quater",
Hibernate.INTEGER));
+ registerFunction("quarter", new
StandardSQLFunction("quarter", Hibernate.INTEGER));
// registerFunction("second", new
StandardSQLFunction("second", Hibernate.INTEGER));
registerFunction("week", new StandardSQLFunction("week",
Hibernate.INTEGER));
// registerFunction("year", new StandardSQLFunction("year",
Hibernate.INTEGER));
@@ -215,10 +216,10 @@
}
public String getLimitString(String sql, boolean hasOffset) {
- return new StringBuffer(sql.length() + 20).
- append(sql).
- append(hasOffset ? " limit ? offset ?" : " limit ?").
- toString();
+ return new StringBuffer(sql.length() + 20)
+ .append(sql)
+ .append(hasOffset ? " limit ? offset ?" : " limit ?")
+ .toString();
}
public boolean bindLimitParametersInReverseOrder() {
@@ -266,29 +267,27 @@
}
private static ViolatedConstraintNameExtracter EXTRACTER = new
TemplatedViolatedConstraintNameExtracter() {
+ /**
+ * Extract the name of the violated constraint from the given SQLException.
+ *
+ * @param sqle The exception that was the result of the constraint violation.
+ * @return The extracted constraint name.
+ */
+ public String extractConstraintName(SQLException sqle) {
+ String constraintName = null;
+ // 23000: Check constraint violation: {0}
+ // 23001: Unique index or primary key violation: {0}
+ if ( sqle.getSQLState().startsWith( "23" ) ) {
+ final String message = sqle.getMessage();
+ final int idx = message.indexOf( "violation: " );
+ if ( idx > 0 ) {
+ constraintName = message.substring( idx + "violation: ".length() );
+ }
+ }
+ return constraintName;
+ }
+ };
- /**
- * Extract the name of the violated constraint from the given SQLException.
- *
- * @param sqle The exception that was the result of the constraint violation.
- * @return The extracted constraint name.
- */
- public String extractConstraintName(SQLException sqle) {
- String constraintName = null;
- // 23000: Check constraint violation: {0}
- // 23001: Unique index or primary key violation: {0}
- if(sqle.getSQLState().startsWith("23")) {
- String message = sqle.getMessage();
- int idx = message.indexOf("violation: ");
- if(idx > 0) {
- constraintName = message.substring(idx + "violation:
".length());
- }
- }
- return constraintName;
- }
-
- };
-
public boolean supportsTemporaryTables() {
return true;
}
@@ -319,4 +318,4 @@
public boolean supportsLobValueChangePropogation() {
return false;
}
-}
\ No newline at end of file
+}
Show replies by date