5

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

class Person {
    static hasMany = [nicknames:String]
}

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

---------------------------------------------
| person_id         |     nickname          |
---------------------------------------------
|   1               |      Fred             |
---------------------------------------------

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

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

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

4

2 回答 2

0

您可以使用 joinTable 和基本集合类型。

http://grails.org/doc/2.4.3/ref/Database%20Mapping/joinTable.html

您可以使用列映射指定 SQL 行为:

http://grails.org/doc/2.4.3/ref/Database%20Mapping/column.html

于 2014-10-22T14:46:18.343 回答
0

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

于 2013-02-21T15:32:34.723 回答