#java #json #hibernate #jpa #hibernate-mapping
Вопрос:
Я пытаюсь следить за этим блогом о том, как отобразить 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>
Классы java являются :
// 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? Если да, то как мне связать его с отображением Test_jdoc?
Заранее спасибо за вашу помощь.
Ответ №1:
Благодаря владмихальче я смог понять.
Забудьте о файлах отображения гибернации.
Сделайте сопоставление аннотаций JPA !
Мое решение моей проблемы :
Вместо добавления вашего класса с <mapping resource="Test_json.hbm.xml" />
.
Добавьте свой класс с кодом при создании SessionFactory :
sessionFactory = new MetadataSources( registry )
.addAnnotatedClass(Test_json.class)
.buildMetadata().buildSessionFactory();