如何在休眠映射文件中映射 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();
我正在尝试关注这个关于如何将 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();