将Hibernate升级到6.1 -如何指定@Type(type=“text”)的等效项?

zzzyeukh  于 2022-11-30  发布在  其他
关注(0)|答案(2)|浏览(430)

我们目前使用的是Hibernate 5.6,但正在尝试升级到Hibernate 6.1。在一个实体中,我们具有以下属性:

@Type(type = "text")
private String someText;

但是在Hibernate 6.1中,@Type注解中的type字段被删除了。

@java.lang.annotation.Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface Type {

    /**
     * The implementation class which implements {@link UserType}.
     */
    Class<? extends UserType<?>> value();

    /**
     * Parameters to be injected into the custom type after it is
     * instantiated. The {@link UserType} implementation must implement
     * {@link org.hibernate.usertype.ParameterizedType} to receive the
     * parameters.
     */
    Parameter[] parameters() default {};
}

问:Hibernate 6.1中@Type(type = "text")的等价物是什么?

xmjla07d

xmjla07d1#

基于Hibernate 5.0文档-对于text,BasicTypeRegistry键对应于LONGVARCHAR Jdbc类型。
在Hibernate 6.1.5文档中,提供了使用@JdbcTypeCode注解的选项:

@JdbcTypeCode(Types.LONGVARCHAR)
private String text;
bjp0bcyl

bjp0bcyl2#

我不知道在Hibernate 6+中使用@Type的正确语法,但作为一种解决方法,您可以尝试使用@Column注解:

@Column(columnDefinition="TEXT")
private String someText;

相关问题