Quarkus 3.0 中的 H2 方言

问题描述 投票:0回答:1

将以下代码从 quarkus 2.0.x 升级到 3.0.x 导致该方法被弃用:registerColumnType。如何重构此代码,使其适用于 3.0?

public class H2CustomDialect extends H2Dialect {

    public H2CustomDialect() {
        super();
        registerColumnType(Types.BINARY, "varbinary");
    }
}
h2 quarkus quarkus-hibernate-orm
1个回答
0
投票

首先,不要升级到3.0,而是升级到3.3。 3.2 如果必须的话。但3.0不再维护了。

其次,你所做的事情很奇怪。基本上,您是在告诉 Hibernate ORM 在需要使用 BINARY 的任何地方都使用 VARBINARY 类型,即使您可以只是告诉它将 VARBINARY 分配给应用程序中拥有的任何 Java 类型或属性。请参阅此处了解类型映射此处了解在 Quarkus 中配置

MetadataBuilderContributor
以注册您的类型映射

最后,如果你真的必须这样做,这样的事情可能会起作用:

public class H2CustomDialect extends H2Dialect {

    public H2CustomDialect() {
        super();
    }

    @Override
    protected void registerColumnTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) {
        super.registerColumnTypes( typeContributions, serviceRegistry );
        ddlTypeRegistry.addDescriptor( Types.BINARY, ddlTypeRegistry.getDescriptor( Types.VARBINARY ) );
    }

}

不过,我真的不认为这是一个好主意。

© www.soinside.com 2019 - 2024. All rights reserved.