JDBC 类型无方言映射:2003,但已注册

问题描述

如何修复这个错误

没有 JDBC 类型的方言映射:2003

这是我的方言类 - 子实体没有字段,与错误相关

public class CustomPostgresql10Dialect extends Postgresql10Dialect {
    public CustomPostgresql10Dialect() {
        super();
        this.registerHibernateType(2003,"sql_array_type");
    }
}

和单个属性文件

spring.jpa.database-platform=io.alphaminds.base.hibernate.dialect.CustomPostgresql10Dialect
spring.jpa.hibernate.dialect=io.alphaminds.base.hibernate.dialect.CustomPostgresql10Dialect

春季 2.5.2

还有我的实体

@TypeDef(
        name = "enum-array",typeClass = EnumArrayType.class
)
@FieldDefaults(level = AccessLevel.PRIVATE)
public abstract class Contact extends AuditedEntity {
    //...
    @Type(type = "enum-array",parameters = @org.hibernate.annotations.Parameter(
            name = "sql_array_type",value = "messengers"))
    MessengerType[] messengers;
}

解决方法

您需要通过在 registerColumnType 中调用 Dialect 来注册 SQL 类型,尽管我认为这不是您真正想要的,因为这将对所有枚举使用单个 SQL 类型数组。您应该通过 @Column(columnDefinition = "int[]")

在使用站点提供 SQL 类型

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...