首页 > 解决方案 > Hibernate:在@Audited 的情况下,JsonBlobType 不能与 Oracle 一起使用

问题描述

正如论坛中所建议的那样 - https://vladmihalcea.com/oracle-json-jpa-hibernate/

我正在使用以下代码在实体中使用字符串类型映射 oracle blob JSON 列 -

@TypeDefs({ @TypeDef(name = "jsonb", typeClass = JsonBlobType.class) })
    @Audited
    @Table(name = "hyperform_common_config")
    @Entity
    public class CommonConfig implements Serializable{

    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    @Column(name = "id")
    private long id;
    @Type(type = "jsonb")
    @Column(name = "config_data")
    private String configData;

但是 JsonBlobType 在 @Audited 的情况下不起作用。错误 -

Caused by: org.hibernate.MappingException: Could not determine type for: jsonb-lob, at table: hyperform_common_config_AUD, for columns: [org.hibernate.mapping.Column(config_data)]

我需要为审计表做任何额外的配置吗?

标签: hibernatejpahibernate-mapping

解决方案


奇怪的是,只需将类型名称更改为“jsonb-lob”就可以了-

@TypeDefs({ @TypeDef(name = "jsonb-lob", typeClass = JsonBlobType.class) })
@Audited
@Table(name = "hyperform_common_config")
@Entity
public class CommonConfig implements Serializable{

    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    @Column(name = "id")
    private long id;
    @Type(type = "jsonb-lob")
    @Column(name = "config_data")
    private String configData;

推荐阅读