代码之家  ›  专栏  ›  技术社区  ›  kofhearts

如何使一对多关系联接表中的第一列为空?

  •  0
  • kofhearts  · 技术社区  · 6 年前

    从grails2到grails3的行为似乎发生了变化。当我建立一对多的关系

    class Author {
        static hasMany = [books: Book]
        String name
    }
    class Book {
        String title
    }
    

    它将创建一个包含author\u books\u id和book\u id列的联接表,在grails3中,它还对第一列添加了notnull约束。在grails2中,不应用notnull约束。因此,当我升级到grails3时,它正在崩溃,因为已经有少数记录的第一列值为null。它在grails2中运行良好,但在grails3中,第一列不应为null。此外,联接表是只读的,因此我无法删除行,因为第一列值将为空。有没有办法通过在域中而不是直接在迁移文件中进行更改来使第一列nullable=true。

    6.2.1.2一对多

    http://docs.grails.org/3.0.17/guide/GORM.html

    1 回复  |  直到 6 年前
        1
  •  0
  •   elixir    6 年前

    class Book {
        String title
        Author author     // this creates the belongs to relationship
    }
    
    static constraints = {
         author nullable:true
    }
    

    另外,在重新编译代码时,请确保删除上一个表并重新开始。Grails不会改变任何表来删除任何东西。它只会增加新的东西。