org.hibernate.dialect.PostgresPlusDialect.java Source code

Java tutorial

Introduction

Here is the source code for org.hibernate.dialect.PostgresPlusDialect.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.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

import org.hibernate.dialect.function.NoArgSQLFunction;
import org.hibernate.dialect.function.NvlFunction;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.type.StandardBasicTypes;

/**
 * An SQL dialect for Postgres Plus
 *
 * @author Jim Mlodgenski
 */
@SuppressWarnings("deprecation")
public class PostgresPlusDialect extends PostgreSQLDialect {
    /**
     * Constructs a PostgresPlusDialect
     */
    public PostgresPlusDialect() {
        super();

        registerFunction("ltrim", new StandardSQLFunction("ltrim"));
        registerFunction("rtrim", new StandardSQLFunction("rtrim"));
        registerFunction("soundex", new StandardSQLFunction("soundex"));
        registerFunction("sysdate", new NoArgSQLFunction("sysdate", StandardBasicTypes.DATE, false));
        registerFunction("rowid", new NoArgSQLFunction("rowid", StandardBasicTypes.LONG, false));
        registerFunction("rownum", new NoArgSQLFunction("rownum", StandardBasicTypes.LONG, false));
        registerFunction("instr", new StandardSQLFunction("instr", StandardBasicTypes.INTEGER));
        registerFunction("lpad", new StandardSQLFunction("lpad", StandardBasicTypes.STRING));
        registerFunction("replace", new StandardSQLFunction("replace", StandardBasicTypes.STRING));
        registerFunction("rpad", new StandardSQLFunction("rpad", StandardBasicTypes.STRING));
        registerFunction("translate", new StandardSQLFunction("translate", StandardBasicTypes.STRING));
        registerFunction("substring", new StandardSQLFunction("substr", StandardBasicTypes.STRING));
        registerFunction("coalesce", new NvlFunction());
        registerFunction("atan2", new StandardSQLFunction("atan2", StandardBasicTypes.FLOAT));
        registerFunction("mod", new StandardSQLFunction("mod", StandardBasicTypes.INTEGER));
        registerFunction("nvl", new StandardSQLFunction("nvl"));
        registerFunction("nvl2", new StandardSQLFunction("nvl2"));
        registerFunction("power", new StandardSQLFunction("power", StandardBasicTypes.FLOAT));
        registerFunction("add_months", new StandardSQLFunction("add_months", StandardBasicTypes.DATE));
        registerFunction("months_between", new StandardSQLFunction("months_between", StandardBasicTypes.FLOAT));
        registerFunction("next_day", new StandardSQLFunction("next_day", StandardBasicTypes.DATE));
    }

    @Override
    public String getCurrentTimestampSelectString() {
        return "select sysdate";
    }

    @Override
    public String getCurrentTimestampSQLFunctionName() {
        return "sysdate";
    }

    @Override
    public int registerResultSetOutParameter(CallableStatement statement, int col) throws SQLException {
        statement.registerOutParameter(col, Types.REF);
        col++;
        return col;
    }

    @Override
    public ResultSet getResultSet(CallableStatement ps) throws SQLException {
        ps.execute();
        return (ResultSet) ps.getObject(1);
    }

    @Override
    public String getSelectGUIDString() {
        return "select uuid_generate_v1";
    }

}