自定义、基于序列的 ID 生成器 Hibernate 6 问题

NAV*_*EEN 2 java hibernate jpa spring-boot hibernate-6.x

我最近将 Hibernate 从 5 迁移到了 6

但面临着 Hibernate 6 中已弃用的LongType问题

这是我在 Hibernate 5 中的实现

public class StringPrefixedSequenceIdGenerator extends SequenceStyleGenerator {
 
    public static final String VALUE_PREFIX_PARAMETER = "valuePrefix";
    public static final String VALUE_PREFIX_DEFAULT = "";
    private String valuePrefix;
 
    public static final String NUMBER_FORMAT_PARAMETER = "numberFormat";
    public static final String NUMBER_FORMAT_DEFAULT = "%d";
    private String numberFormat;
 
    @Override
    public Serializable generate(SharedSessionContractImplementor session,
            Object object) throws HibernateException {
        return valuePrefix + String.format(numberFormat, super.generate(session, object));
    }
 
    @Override
    public void configure(Type type, Properties params,
            ServiceRegistry serviceRegistry) throws MappingException {
        super.configure(LongType.INSTANCE, params, serviceRegistry);
        valuePrefix = ConfigurationHelper.getString(VALUE_PREFIX_PARAMETER,
                params, VALUE_PREFIX_DEFAULT);
        numberFormat = ConfigurationHelper.getString(NUMBER_FORMAT_PARAMETER,
                params, NUMBER_FORMAT_DEFAULT);
    }
 
}
Run Code Online (Sandbox Code Playgroud)

由于在 Hibernate 6 -> org.hibernate.type.LongType 中已弃用,我收到错误

如何实现自定义的、基于序列的 ID 生成器?

dha*_*ada 7

检查javadocs https://docs.jboss.org/hibernate/orm/6.1/javadocs/org/hibernate/type/BasicTypeRegistry.html后,我尝试了这个并且它有效:

super.configure(new TypeConfiguration().getBasicTypeRegistry().getRegisteredType(Long.class), params, serviceRegistry);
Run Code Online (Sandbox Code Playgroud)