Карта других типов, кроме строк в Grails

Я создал простой доменный класс с картой внутри него.

class Foo {
   Map bar
}

Отображение баров будет создано как что-то вроде:

create table foo_bar (bar bigint, bar_idx varchar(255),
   bar_elt varchar(255) not null);

... как указано в http://www.grails.org/GORM+-+Collection+Types:

Статическое свойство hasMany определяет тип элементов карты. Ключи для карты ДОЛЖНЫ быть строками.

Теперь мой вопрос: можно ли создать карту значений, отличных от строк? Я могу добиться этого, используя чистый Hibernate (сопоставление элементов) — есть идеи, как перенести это на Grails?


person Henryk Konsek    schedule 17.02.2010    source источник


Ответы (1)


Я думаю, вы имели в виду, можно ли создать карту KEYS, кроме строк.

Это невозможно: все ключи должны быть строками, а значения могут быть любого типа. Способ добиться того, чего вы хотите, - это использовать некоторый уникальный идентификатор для типа класса, который вы хотите использовать в качестве ключа вашей карты.

Скажем, вы хотите, чтобы карта сохранялась в вашей базе данных, и скажите, что у вас есть два экземпляра: objectA и objectB, которые вы хотите сохранить в своей карте, имя которых — «отношение»:

отношение."objectA.toString()" = объектB

Это должно сработать. Измените toString() с помощью hashCode(), getId() или любой другой вещи, которая даст вам уникальную строку, которая идентифицирует этот объект и только его, и вы его получили.

person olmaygti    schedule 03.05.2011