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

时间:2018-10-02 06:17:20

标签: grails grails3

行为似乎从grails 2变为grails3。当我建立一对多关系时

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Toggle click for class availability:</p>
<a  href="#" data-lrn-index="0" role="checkbox" aria-label="Response area" aria-checked="false">Click here to check class</a>

它将创建一个包含表author_books_id和book_id的联接表。在grails 3中,它还在第一列上添加了非null约束。在grails 2中,不应用null约束。因此,当我升级到grails 3时,它会中断,因为已经有一些记录的第一列值为null。它在grails 2中可以正常工作,但在grails 3中,第一列不应为null。此外,联接表是只读的,因此我无法删除行,因此第一列的值将为空。是否可以通过在域中而不是直接在迁移文件中进行更改来使第一列为nullable = true。

该代码是从grails文档中提取的。请向下滚动到一对多部分。

6.2.1.2一对多

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

1 个答案:

答案 0 :(得分:0)

尝试将您的Book类更改为此

Optional<Int>

此外,当您重新编译代码时,请确保删除先前的表并重新开始。 Grails不会更改任何表以删除任何内容。它只会添加新内容。