2010-07-07 4 views
0

Исходя из NHibernate, я пытался сделать что-то подобное в Java (первый пример):Hibernate Mapping карта

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 cannot be cast to java.lang.String

Am я с видом что-то очевидное здесь? Я действительно не понимаю, что такое «$ Proxy17».

ответ

1

Вы можете попробовать <element column="propertyValue" type="string"/> вместо этого. Спящий режим обычно достаточно умен, чтобы выполнять всю работу по преобразованию клобов в строки.

1

Для отображения CLOB на значение строки в вашей карте, вам, возможно, потребуется создать собственный пользовательский тип ... эту статью: http://simoes.org/docs/hibernate-2.1/76.html