2012-06-07 245 views
1

我有一個使用表示發佈者對象的「類」標記的hibernate映射。發佈者領域之一是一個非常大的描述(最大30k字符)。我使用的最大值爲4k字符的oracle varchar字段,所以我強迫我在8個不同的字段中分割我的描述(我強制使用varchar字段類型btw)。我不想隱藏這個數據庫的複雜性,只有我的發佈者對象中有1個描述字段。休眠映射

到目前爲止,我發現的唯一方法是在8個描述字段中映射一個「transit」對象,我可以用1個描述在最終發佈者對象中動態拷貝。

任何人都有更好的方式來做到這一點?

回答

0

我想你可以使用Hibernate的自定義UserType來「神奇地」將列組合成單個值。

本部分文檔討論瞭如何在從表中檢索數據時結合兩列來創建自定義貨幣類。這可能會讓你開始。

http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/types.html#types-custom

我個人以此來從數據庫中加載的斑點,並且它工作得很好,一旦你得到的書面和映射到數據庫的映射的用戶類型,你的代碼甚至不「知道」關於數據庫中的實際物理類型。

0

使用8個字段爲一個值實在是太醜了,但無論如何...

Hibernate的使用對象。而對象使用封裝。在實體提供公共getDescription()setDescription()方法,並將這些方法加入/拆分從/描述你的8,私人的,持久字段:

public String getDescription() { 
    return join(desc1, desc2, ..., desc8); 
} 

public void setDescription(String description) { 
    String[] s = split(description); 
    desc1 = s[0]; 
    ... 
    desc8 = s[7]; 
}