2010-02-17 2 views
0

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

class Foo { 
    Map bar 
} 

картирование 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?

ответ

1

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

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

Допустим, вы хотите Карта сохранялось в базе данных и у вас есть два экземпляра: Objecta и objectB вы хотите оставаться в вашей карте, имя которому «отношения»:.

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

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