2010-06-17 78 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;