2012-06-07 80 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]; 
}