如何在休眠映射文件中映射 json 列?

How do I map json column in hibernate-mapping file?

我正在尝试关注这个关于如何将 json 映射到休眠的博客:https://vladmihalcea.com/how-to-map-json-objects-using-generic-hibernate-types。 它没有说明如何执行休眠映射文件 (.hbm.xml).

我该怎么做?

我试过类似的方法,但它不起作用:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.orange.model">
    <class name="Test_json" table="product_json">
        <id name="id" column="id">
            <generator class="increment"/>
        </id>
        <property name="jdoc" column="json" type="json" />
    </class>
</hibernate-mapping>

javaclass是:

// package and imports omitted

@XmlRootElement
@Entity
@Table(name="product_json")
@TypeDef(name = "json", typeClass = JsonType.class)
public class Test_json {
    
    @Id
    @GeneratedValue(generator="increment")
    @GenericGenerator(name="increment", strategy = "increment")
    private int id;

    @Type(type = "json")
    @Column(name="json", columnDefinition ="json")
    private Jdoc jdoc;
    
    // getters and setters omitted
}

// package omitted

public class Jdoc {
    private int idprod;
    private String nameprod;
    private String description;

    // getters and setters omitted
}

我是否必须为 Jdoc 创建休眠映射文件 class?如果是这样,我如何 link 它到 Test_jdoc 映射?

在此先感谢您的帮助。

多亏了 vladmihalcea,我才能够理解。
忘掉休眠映射文件吧。

做JPA注解映射!

我的问题解决方案:
而不是将 class 添加到 <mapping resource="Test_json.hbm.xml" />.
在创建 sessionFactory 时添加代码 class :

sessionFactory = new MetadataSources( registry )
                .addAnnotatedClass(Test_json.class)
                .buildMetadata().buildSessionFactory();