diff --git a/dao/pom.xml b/dao/pom.xml
index e90694f22e..673a08e0c1 100644
--- a/dao/pom.xml
+++ b/dao/pom.xml
@@ -230,6 +230,10 @@
org.thingsboard.rule-engine
rule-engine-api
+
+ io.hypersistence
+ hypersistence-utils-hibernate-55
+
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeDetailsEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeDetailsEntity.java
index 99555393c6..eec70be387 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeDetailsEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeDetailsEntity.java
@@ -16,17 +16,16 @@
package org.thingsboard.server.dao.model.sql;
import com.fasterxml.jackson.databind.JsonNode;
+import io.hypersistence.utils.hibernate.type.array.StringArrayType;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.id.WidgetTypeId;
-import org.thingsboard.server.common.data.id.WidgetsBundleId;
import org.thingsboard.server.common.data.widget.BaseWidgetType;
import org.thingsboard.server.common.data.widget.WidgetTypeDetails;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
-import org.thingsboard.server.dao.util.mapping.StringArrayType;
import javax.persistence.Column;
import javax.persistence.Entity;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeInfoEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeInfoEntity.java
index 2422373c63..fa6fd895cd 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeInfoEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetTypeInfoEntity.java
@@ -15,6 +15,7 @@
*/
package org.thingsboard.server.dao.model.sql;
+import io.hypersistence.utils.hibernate.type.array.StringArrayType;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Immutable;
@@ -23,7 +24,6 @@ import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.widget.BaseWidgetType;
import org.thingsboard.server.common.data.widget.WidgetTypeInfo;
import org.thingsboard.server.dao.model.ModelConstants;
-import org.thingsboard.server.dao.util.mapping.StringArrayType;
import javax.persistence.Column;
import javax.persistence.Entity;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetTypeInfoRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetTypeInfoRepository.java
index 27f4ef918f..f3f3bf5139 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetTypeInfoRepository.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/sql/widget/WidgetTypeInfoRepository.java
@@ -37,7 +37,7 @@ public interface WidgetTypeInfoRepository extends JpaRepository
- extends AbstractSingleColumnStandardBasicType
- implements DynamicParameterizedType {
-
- public static final String SQL_ARRAY_TYPE = "sql_array_type";
-
- public AbstractArrayType(AbstractArrayTypeDescriptor arrayTypeDescriptor) {
- super(
- ArraySqlTypeDescriptor.INSTANCE,
- arrayTypeDescriptor
- );
- }
-
- @Override
- protected boolean registerUnderJavaType() {
- return true;
- }
-
- @Override
- public void setParameterValues(Properties parameters) {
- ((AbstractArrayTypeDescriptor) getJavaTypeDescriptor()).setParameterValues(parameters);
- }
-}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/util/mapping/AbstractArrayTypeDescriptor.java b/dao/src/main/java/org/thingsboard/server/dao/util/mapping/AbstractArrayTypeDescriptor.java
deleted file mode 100644
index 91e426567c..0000000000
--- a/dao/src/main/java/org/thingsboard/server/dao/util/mapping/AbstractArrayTypeDescriptor.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * Copyright © 2016-2023 The Thingsboard Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.thingsboard.server.dao.util.mapping;
-
-import org.hibernate.HibernateException;
-import org.hibernate.type.descriptor.WrapperOptions;
-import org.hibernate.type.descriptor.java.AbstractTypeDescriptor;
-import org.hibernate.type.descriptor.java.MutabilityPlan;
-import org.hibernate.type.descriptor.java.MutableMutabilityPlan;
-import org.hibernate.usertype.DynamicParameterizedType;
-
-import java.sql.Array;
-import java.sql.SQLException;
-import java.util.Arrays;
-import java.util.Properties;
-
-import static org.thingsboard.server.dao.util.mapping.AbstractArrayType.SQL_ARRAY_TYPE;
-
-public abstract class AbstractArrayTypeDescriptor
- extends AbstractTypeDescriptor implements DynamicParameterizedType {
-
- private Class arrayObjectClass;
-
- private String sqlArrayType;
-
- public AbstractArrayTypeDescriptor(Class arrayObjectClass) {
- this(arrayObjectClass, (MutabilityPlan) new MutableMutabilityPlan