自定义GORM基本集合

Dón*_*nal 5 grails groovy grails-orm

除了不同域类之间的关联,GORM还支持基本集合类型的映射..例如,以下类创建一个昵称关联,它是一组字符串实例

class Person {
    static hasMany = [nicknames:String]
}
Run Code Online (Sandbox Code Playgroud)

这会将昵称存储在单独的表中person_nicknames:

---------------------------------------------
| person_id         |     nickname          |
---------------------------------------------
|   1               |      Fred             |
---------------------------------------------
Run Code Online (Sandbox Code Playgroud)

默认情况下,两列都可以为空,并且不存在索引.我想做出以下更改

  • 使两列不为空
  • 放一个复合唯一索引 (person_id, nickname)

显然我可以运行一个SQL脚本来进行这些更改,但是我可以在域模型中表达这一点,以便GORM在创建和更新模式时这样做吗?

Dav*_*ler 0

不,目前这是不可能的。您可以通过将 Nickname 设为显式域类来伪造它(Andre Steingress 在问题评论中给出了一个示例),但否则您必须编写迁移。