Включение операции bitwise_and в SQLServerDialect - PullRequest
0 голосов
/ 04 июля 2019

Я обновляю версии унаследованных приложений Spring и Hibernate с весенних 3 до весенних 5 и hibernate3 до гибернационных 5. Я использую Spring-boot для этого. Мы используем SQLServer в качестве БД. Один из Dao использует «bitwise_and» в запросе для извлечения данных из БД.

Но когда он пытается выполнить запрос, происходит сбой со следующим исключением: -

Caused by: java.sql.SQLException: 'bitwise_and' is not a recognized built-in function name.
    at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
    at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2988)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2421)
    at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:671)
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:505)
    at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:1029)
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60)
    ... 57 common frames omitted

Чтобы включить оператор bitwise_and, настраиваемый SQLServerDialect настраивается следующим образом: -

import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.type.IntegerType;

public class CustomSQLServerDialect extends org.hibernate.dialect.SQLServerDialect {

    public CustomSQLServerDialect() {
        super();
        registerFunction("bitwise_and", new StandardSQLFunction("bitwise_and", IntegerType.INSTANCE));
    }
}

И этот пользовательский диалект также добавлен в hibernateProperties в SessionFactory.

Любая помощь будет принята с благодарностью.

...