Hibernate 6 @Type 注解

6

我升级到了Springboot 3.0,我的Hibernate实体类有如下代码:

    @Column(columnDefinition = "jsonb", nullable = false, updatable = true, name = "accounts") 
    @Type(type = "jsonb")
    private ArrayList<Account> accounts;

但是自从升级到Springboot 3.0并转移到Jakarta Persistence后,我遇到了异常“无法解析方法'type'”。

我需要一个替代com.vladmihalcea.hibernate.type.json.JsonBinaryType的方案;

4个回答

7
我找到了答案:
我需要使用这个库:
<groupId>com.vladmihalcea</groupId> 
<artifactId>hibernate-types-60</artifactId> 

在实体中:
    @Column(columnDefinition = "jsonb", nullable = false, updatable = true, name = "accounts") 
    @Type(JsonBinaryType.class)
    private ArrayList<Account> accounts;

2
尝试这个时,我遇到了错误类型不匹配。 需要: KClass<out UserType<*>!> 找到: KClass<JsonBinaryType> - bijesanu
我之前也遇到过类似的问题,直到我更新了我的Maven依赖。 - Chris

4
在 Hybernate 6 中,像 SqlTypes.JSON 这样的新功能已经被添加进来。因此,您可以在您的字段中拥有 "jsonb",就像这样:
@JdbcTypeCode(SqlTypes.JSON)
@Column(columnDefinition = "jsonb") 
private ArrayList<Account> accounts;

1
我发现JSONb类型很难进行查询。Hibernate并不方便,基本上只能强制使用原始查询类型。 - TrollBearPig

3
在 Hibernate 6 中,映射注解更加类型安全。通常需要指定 Class 引用而不是字符串类型的名称。

1
感谢您对新变化的关注和支持 ^_^ - TrollBearPig

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接