开发者

Hibernate Mapping a Map

Coming from NHibernate, I've tried to do something like this in Java (first example):

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

I have the following code:

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

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

And in the mapping:

<map name="properties" access="field">
  <key column="boxId"/>
  <map-key column="propertyKey" t开发者_StackOverflow中文版ype="string"/>
  <element column="propertyValue" type="clob"/>
</map>

But when I try to get a property value through the getProperty method, I get the following error:

java.lang.ClassCastException: $Proxy17 cannot be cast to java.lang.String

Am I overlooking something obvious here? I don't really get what "$Proxy17" is.


You might try <element column="propertyValue" type="string"/> instead. Hibernate is usually smart enough to do all the work of converting clobs to strings.


To map the clob to a string value in your map, you might need to create a custom user type... see this article: http://simoes.org/docs/hibernate-2.1/76.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜