2010-06-17 149 views
2

如何通过JPA/Hibernate保存XMLType列?根据oracle文档,在声明XMLType的存储子句时有两种方法。它们是LOB和对象关系。我不想和LOB一起去。我有架构并注册到数据库中。我没有关于如何设计我的XMLType实体的例子。有人知道请分享吗?如何使用JPA/Hibernate映射XMLType

回答

0

我会使用自定义UserType(Hibernate扩展)。博客文章Hibernate with Oracle XmlType提供了一个可以重复使用的实现。然后,用Type注释声明您的自定义UserType

+0

谢谢。但是当我尝试通过JPA entitymanager持久化时,我得到了下面的SQL异常。我已经做正是你在你的博客 提供什么>创建Hibernate的用户类型类 >实体指向@Type(“HibernateXMLType”) >文档作为现场 SQL异常 ------------ - java.sql.SQLException:无法将文档转换为字符串进行存储 – Moorthy 2010-06-17 23:44:25

+0

@Moorthy:请用问题更新您的问题,它在评论框中无法读取。 – 2010-06-18 00:03:04

+0

oracle xml解析器xmlparserv2.jar导致该问题。如果我删除它,HibernateXMLType类引发从行以下例外 \t XMLTYPE = XMLType.createXML(st.getConnection(),...) java.lang.NoClassDefFoundError:ORACLE/XML /解析器/ V2/XMLParseException \t在com.tutorial.hibernate.HibernateXMLType.nullSafeSet(HibernateXMLType.java:112) 我知道这个解析器与javax.xml.parser冲突 请告诉这个如何解决它。 – Moorthy 2010-06-18 17:30:39

0

自定义Java类HibernateXMLType对CLOB工作正常。

0

说明了这此工作正常,我(JPA 2.1和Hibernate 5.1.0):

  • 在实体作为字符串创建领域。
  • 使用Hibernate的@ColumnTransformer注释来定义如何从列中读取和写入。
  • 坐落在@Column的columnDefinition为 “XMLType的”

    @ColumnTransformer(读= “TO_CLOB(列名)”,写= “?”)
    @Column(name = “COLUMN_NAME”,columnDefinition =“ XMLType“)
    private String columnName;