为什么Grails2.4会为包含的域对象向我的数据库添加blob?

为什么Grails2.4会为包含的域对象向我的数据库添加blob?,grails,gorm,Grails,Gorm,我们刚刚从Grails2.2.1升级到Grails2.4.2 在修复所有内容之后,我们注意到一些MySQL数据库表有一些额外的列 以下是场景: class User { String username; } class Report { User issuedBy; } 在升级之前,我们的MySQL报表表如下所示: |id:int|version:int|issued_by_id:int| |id:int|version:int|issued_by_id:int|issue

我们刚刚从Grails2.2.1升级到Grails2.4.2

在修复所有内容之后,我们注意到一些MySQL数据库表有一些额外的列

以下是场景:

class User {
    String username;
}

class Report {
    User issuedBy;
}
在升级之前,我们的MySQL报表表如下所示:

|id:int|version:int|issued_by_id:int|
|id:int|version:int|issued_by_id:int|issued_by:blob|
升级后,看起来是这样的:

|id:int|version:int|issued_by_id:int|
|id:int|version:int|issued_by_id:int|issued_by:blob|
我不明白这是为什么,我不希望我们的生产数据库在部署新版本后发生变化


有人知道这个额外的字段是什么,它来自哪里,它的作用是什么吗?

我不认为这个额外的字段应该存在,因为这个关系是一个简单的manytone,默认情况下,应该由“发布者id”db字段表示


尝试重新运行“dbm generate changelog”,检查它是否创建了额外的字段。如果是这样的话,在Grails JIRA中获得一张罚单可能是值得的。

这可能值得一次JIRA,但您永远不应该信任生成的代码,或者在本例中是生成的变更日志。它很可能是正确的,但在应用更改之前必须验证这一点。这个插件并没有保证无bug的简单迁移,只是它能让你在大部分的过程中做到这一点,并希望最大限度地减少人为干预。我运行了更改日志,它突出显示了更多不需要的更改。升级已经为派生类生成了表,尽管我们使用的是每个层次结构的表,并且实际生成的MySQL查询经过适当的共享表。这两个问题显然都是值得JIRA考虑的问题。看起来我在2.3.9上停留了一段时间:(它不是100%。我上面列出的例子是人为的,我没有测试过。我们域类层次结构中包含的每个对象都没有生成额外的blob。我不知道确切的情况是什么,这意味着很难创建有用的JIRA。