Я обновляю версии унаследованных приложений 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.
Любая помощь будет принята с благодарностью.