org.hibernate.dialect.MySQL5Dialect.java Source code

Java tutorial

Introduction

Here is the source code for org.hibernate.dialect.MySQL5Dialect.java

Source

/*
 * 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.SQLException;
import java.sql.Types;

import org.hibernate.dialect.hint.IndexQueryHintHandler;
import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtracter;
import org.hibernate.exception.spi.ViolatedConstraintNameExtracter;
import org.hibernate.internal.util.JdbcExceptionHelper;

/**
 * An SQL dialect for MySQL 5.x specific features.
 *
 * @author Steve Ebersole
 */
public class MySQL5Dialect extends MySQLDialect {
    @Override
    protected void registerVarcharTypes() {
        registerColumnType(Types.VARCHAR, "longtext");
        //      registerColumnType( Types.VARCHAR, 16777215, "mediumtext" );
        registerColumnType(Types.VARCHAR, 65535, "varchar($l)");
        registerColumnType(Types.LONGVARCHAR, "longtext");
    }

    @Override
    public boolean supportsColumnCheck() {
        return false;
    }

    public ViolatedConstraintNameExtracter getViolatedConstraintNameExtracter() {
        return EXTRACTER;
    }

    protected String getEngineKeyword() {
        return "engine";
    }

    private static final ViolatedConstraintNameExtracter EXTRACTER = new TemplatedViolatedConstraintNameExtracter() {

        @Override
        protected String doExtractConstraintName(SQLException sqle) throws NumberFormatException {
            final int sqlState = Integer.parseInt(JdbcExceptionHelper.extractSqlState(sqle));
            switch (sqlState) {
            case 23000:
                return extractUsingTemplate(" for key '", "'", sqle.getMessage());
            default:
                return null;
            }
        }
    };

    @Override
    public String getQueryHintString(String query, String hints) {
        return IndexQueryHintHandler.INSTANCE.addQueryHints(query, hints);
    }

    @Override
    public boolean supportsUnionAll() {
        return true;
    }
}