【问题标题】:how create json type for java Map interface in entity如何在实体中为 java Map 接口创建 json 类型
【发布时间】:2021-11-25 19:31:45
【问题描述】:

我有这个字段

   @Type(type = "json")
@Column(columnDefinition = "json")
private Map<String, String> businessHours;

这是我班上的佼佼者

@TypeDefs({
        @TypeDef(name = "json", typeClass = JsonType.class)//this is error
})

这就是迁移

 alter table properties alter column business_houres type json USING business_hours::json;

但是看不懂JsonType是红色的

【问题讨论】:

    标签: java postgresql hibernate


    【解决方案1】:

    您应该使用JsonBinaryType.classJsonStringType.class 来表示json 类型,而JsonType.class 不是开箱即用的类型。

    @TypeDefs({
      @TypeDef(name = "json", typeClass = JsonBinaryType.class)
    })
    public class BaseEntity {
       @Type(type = "json")
       @Column(columnDefinition = "json")
       private BusinessHours businessHours;
    }
    

    您可以创建一个包装类来存储 businessHours,如下所示:

    public class BusinessHours implements Serializable {
        private Map<String, String> businessHours; 
    }
    
    

    【讨论】:

    • 我同意,但是在设置了一些地图然后保存后给了我这个错误。错误:列“business_hours”是 json 类型,但表达式的类型是字符变化提示:您需要重写或强制转换表达式。
    • @JackNickelson 我已经更新了我的答案,你能看看使用 JsonBinaryType.class 的包装类是否解决了你的问题?
    • 我不需要二进制它有排序但现在我设置了字符串一个但是在设置一些地图并保存它之后它给出了这个错误错误:列“business_hours”是json类型但表达式是类型字符变化提示:您需要重写或转换表达式。
    • @JackNickelson 你可以尝试用地图创建BusinessHours.java 看看是否有帮助?
    猜你喜欢
    • 2018-06-04
    • 2020-11-04
    • 2022-01-06
    • 2020-05-29
    • 2019-12-10
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多