2012-11-12 28 views
5

在Rails中,我們有serialize方法,該方法將一個屬性(或列)保存在數據庫中時將自動序列化爲json。有沒有什麼Hibernate的序列化/反序列化JSON(或XML)列將其轉換成真正的模型屬性?

保存並查詢該對象之後,可以將對象序列化的json作爲真實的類屬性進行訪問。

我的問題是:是否有任何內置或包含此功能休眠的包?如果否定,是否可以使用反射java api動態創建屬性?

我在質疑這一點,因爲我對學習一點Java以及你可以用JVM做什麼感興趣。

謝謝。

回答

4

我真的不明白你想要什麼,對不起。

但是,如果您希望有一個對象的字段,其值在單列中以序列化形式保存到數據庫,而不是映射爲引用另一個表中的行,那麼這是JPA的標準部分。您只需定義一個字段,然後不要使用關係註釋對其進行註釋。雖然(可惜),但我相信該字段的類型必須是Serializable的子類型。例如:

@Entity 
public class Colleague { 
    @Id 
    private int id; 
    private HashMap<Date, String> diary; 
} 

這將映射到這樣一個表:

create table Colleague (
    id integer primary key, 
    diary blob 
) 

現在,你提到的JSON。這不會使用JSON;它將使用標準的Java序列化。我認爲沒有任何特別有效的方法可以使它成爲JSON。最簡單的可能是將對象包裝成JSONifying包裝器中的序列。不太難,但有點奇怪。

儘管這不是JSON,但它在很大程度上也很有用:數據進入數據庫然後返回。

再次,不知道這是否真的是你想要的,對不起!

+0

謝謝,我想要的是功能:-)你釘了它! – thiagofm

+0

不幸的是,'java.util.Map'沒有擴展java.io.Serializable',但它的流行實現呢! –

0

我認爲,你可以使用Gson庫這一點。它允許你序列化和反序列化json對象或java對象。

對於XML文件,您可以使用XStream庫。

0

我不認爲Hibernate有這樣的工具。但是,我看到2種方法來模擬這種行爲

  1. 在實體使用JPA @PrePersit方法和使用的JSON庫重新呈現在你的實體法價值
  2. 使用一些AOP和重新渲染上同樣的方式
相關問題