Hibernate映射地图

时间:2010-07-07 21:33:28

标签: java hibernate

来自NHibernate,我试图用Java做这样的事情(第一个例子):

http://ayende.com/Blog/archive/2009/06/03/nhibernate-mapping-ndash-ltmapgt.aspx

我有以下代码:

public class Box implements Serializable {
  private Long boxId;
  private Map<String, String> properties;

  public String getProperty(String key) {
    return properties.get(key);
  }
}

在映射中:

<map name="properties" access="field">
  <key column="boxId"/>
  <map-key column="propertyKey" type="string"/>
  <element column="propertyValue" type="clob"/>
</map>

但是当我尝试通过 getProperty 方法获取属性值时,我收到以下错误:

  

java.lang.ClassCastException:$ Proxy17   无法强制转换为java.lang.String

我是否忽视了一些明显的东西?我真的不知道“$ Proxy17”是什么。

2 个答案:

答案 0 :(得分:1)

要将clob映射到地图中的字符串值,您可能需要创建自定义用户类型...请参阅此文章:http://simoes.org/docs/hibernate-2.1/76.html

答案 1 :(得分:1)

您可以尝试使用<element column="propertyValue" type="string"/>。 Hibernate通常足够聪明,可以完成将clobs转换为字符串的所有工作。