Карта других типов, кроме Strings in Grails - PullRequest
0 голосов
/ 17 февраля 2010

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

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 определяет тип элементов внутри Карта. Ключи для карты ДОЛЖНЫ быть строки.

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

1 Ответ

1 голос
/ 03 мая 2011

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

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

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

отношение. "ObjectA.toString ()" = objectB

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

...