H2Dialect в Quarkus 3.0
Обновление следующего кода с версии Quarkus 2.0.x до версии 3.0.x привело к прекращению использования метода: RegisterColumnType. Как провести рефакторинг этого кода, чтобы он работал с версией 3.0?
public class H2CustomDialect extends H2Dialect {
public H2CustomDialect() {
super();
registerColumnType(Types.BINARY, "varbinary");
}
}
1 ответ
Во-первых, обновляйтесь не до 3.0, а до 3.3. 3.2, если нужно. Но версия 3.0 больше не поддерживается.
Во-вторых, то, что ты делаешь, странно. По сути, вы указываете Hibernate ORM использовать тип VARBINARY везде, где он будет использовать BINARY, даже если вы могли бы просто указать ему назначить VARBINARY любым типам или свойствам Java, которые есть в вашем приложении. См . здесь сопоставления типов , здесь для настройки
MetadataBuilderContributor
в Quarkus для регистрации сопоставлений типов .
Наконец, если вам действительно необходимо это сделать, может сработать что-то вроде этого:
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 ) );
}
}
Хотя я действительно не думаю, что это хорошая идея.