Java tutorial
/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.dialect; import java.sql.Types; import org.hibernate.NullPrecedence; import org.hibernate.dialect.function.NoArgSQLFunction; import org.hibernate.type.StandardBasicTypes; /** * A dialect for Microsoft SQL Server 2008 with JDBC Driver 3.0 and above * * @author Gavin King */ public class SQLServer2008Dialect extends SQLServer2005Dialect { private static final int NVARCHAR_MAX_LENGTH = 4000; /** * Constructs a SQLServer2008Dialect */ public SQLServer2008Dialect() { registerColumnType(Types.DATE, "date"); registerColumnType(Types.TIME, "time"); registerColumnType(Types.TIMESTAMP, "datetime2"); registerColumnType(Types.NVARCHAR, NVARCHAR_MAX_LENGTH, "nvarchar($l)"); registerColumnType(Types.NVARCHAR, "nvarchar(MAX)"); registerFunction("current_timestamp", new NoArgSQLFunction("current_timestamp", StandardBasicTypes.TIMESTAMP, false)); } @Override public String renderOrderByElement(String expression, String collation, String order, NullPrecedence nulls) { final StringBuilder orderByElement = new StringBuilder(); if (nulls != null && !NullPrecedence.NONE.equals(nulls)) { // Workaround for NULLS FIRST / LAST support. orderByElement.append("case when ").append(expression).append(" is null then "); if (NullPrecedence.FIRST.equals(nulls)) { orderByElement.append("0 else 1"); } else { orderByElement.append("1 else 0"); } orderByElement.append(" end, "); } // Nulls precedence has already been handled so passing NONE value. orderByElement.append(super.renderOrderByElement(expression, collation, order, NullPrecedence.NONE)); return orderByElement.toString(); } @Override public boolean supportsValuesList() { return true; } }