grails - 除Grails中的字符串以外的其他类型的映射

标签 grails gorm

我创建了带有 map 的简单域类。

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所述:

The static hasMany property defines the type of the elements within the Map. The keys for the map MUST be strings.



现在我的问题是-是否可以创建除字符串以外的值映射?我可以使用纯Hibernate(元素映射)实现这一点-有什么想法可以将其移植到Grails?

最佳答案

我认为您的意思是是否可以创建除Strings之外的KEYS映射。

这是不可能的:所有键都必须是字符串,而值可以是您想要的任何类型。
一种实现所需目标的方法是,对要用作 map 键的类的类型使用一些唯一的标识符。

假设您希望Map保留在数据库中,并说您有两个实例:要保留在 map 中的objectA和objectB,名称为“relationship”:

关系。“objectA.toString()” = objectB

那应该工作。用hashCode(),getId()或其他任何可以为您提供唯一的String来标识该对象以及仅此对象的东西,将toString()更改为您即可。

关于grails - 除Grails中的字符串以外的其他类型的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284049/

相关文章:

Grails 执行器插件 callAsync block 始终采用相同的值

grails - 有没有一种方法可以懒惰地使用hasOne子项获取GORM实体?

unit-testing - 具有派生属性的域类的Grails3单元测试

grails - GORM继承

grails - 设置记住时的grails spring安全重定向

grails - 如何从Grails执行BACKUP DATABASE查询?

grails - 如何在gsp页面中执行除法操作。

grails - 在同一服务器和同一端口上使用不同的主机名运行多个Grails/Jetty实例

hibernate - 查询唯一/不同的ID和状态日期

mongodb - Grails MongoDB无法保存在afterUpdate中