我有一个Grails 2应用程序,其中一个域对象使用此行:
static hasMany = [masters: AssetType, shortforms: AssetType, mezzanines: AssetType, captions: AssetType, artwork: AssetType, ancillary: AssetType]
生成的桥表有7列,所有列都是可为空的,并且表本身是稀疏填充的,大多数行的值只有2/7列。
现在,我正在迁移到Grails 3。 该应用程序的Grails 3版本具有完全相同的域类定义,但是结果表中的AssetType_ID仅可为空。
尝试用一些空值填充该表时出现此错误:
由于:org.h2.jdbc.JdbcSQLException:列“ AEPARTNER_PACKAGE_ANCILLARY_ID”不允许为NULL; SQL语句: 将值(?,?)插入aepartner_package_asset_type(aepartner_package_artwork_id,asset_type_id)[23502-197]
将以下代码添加到域类的“约束”没有帮助。
ancillary nullable: true
注意:我使用H2 Web客户端查看表数据和表定义,包括IS_NULLABLE字段。
如何在Grails 3中将这些列/字段设置为可空?
数据源定义:
dataSource:
pooled: true
jmxExport: true
driverClassName: org.h2.Driver
username: sa
password: ''
environments:
development:
dataSource:
dbCreate: create-drop
url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
grails.dbconsole.enabled: true
非常感谢您的帮助。