ThingsboardPostgreSQLDialect fixed with type cast to text. SqlExceptionHelper - ERROR: operator does not exist: character varying ~~* bytea. Hint: No operator matches the given name and argument types. You might need to add explicit type casts.

This commit is contained in:
Sergey Matvienko 2024-04-18 20:29:34 +02:00
parent c4918d97c9
commit 38f3a16a31

View File

@ -15,23 +15,26 @@
*/ */
package org.thingsboard.server.dao; package org.thingsboard.server.dao;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.boot.model.FunctionContributions; import org.hibernate.boot.model.FunctionContributions;
import org.hibernate.dialect.PostgreSQLDialect; import org.hibernate.dialect.PostgreSQLDialect;
import org.hibernate.query.sqm.function.SqmFunctionRegistry; import org.hibernate.query.sqm.function.SqmFunctionRegistry;
import org.hibernate.type.BasicTypeRegistry; import org.hibernate.type.BasicTypeRegistry;
import org.hibernate.type.StandardBasicTypes; import org.hibernate.type.StandardBasicTypes;
@Slf4j
public class ThingsboardPostgreSQLDialect extends PostgreSQLDialect { public class ThingsboardPostgreSQLDialect extends PostgreSQLDialect {
@Override @Override
public void initializeFunctionRegistry(FunctionContributions functionContributions) { public void initializeFunctionRegistry(FunctionContributions functionContributions) {
log.trace("initializeFunctionRegistry [{}]", functionContributions);
super.initializeFunctionRegistry(functionContributions); super.initializeFunctionRegistry(functionContributions);
BasicTypeRegistry basicTypeRegistry = functionContributions.getTypeConfiguration().getBasicTypeRegistry(); BasicTypeRegistry basicTypeRegistry = functionContributions.getTypeConfiguration().getBasicTypeRegistry();
SqmFunctionRegistry functionRegistry = functionContributions.getFunctionRegistry(); SqmFunctionRegistry functionRegistry = functionContributions.getFunctionRegistry();
functionRegistry.registerPattern( functionRegistry.registerPattern(
"ilike", "ilike",
"(?1 ILIKE ?2)", "(?1::text ILIKE ?2::text)",
basicTypeRegistry.resolve(StandardBasicTypes.BOOLEAN)); basicTypeRegistry.resolve(StandardBasicTypes.BOOLEAN));
} }
} }