2014-09-04 20 views
1

我们刚刚从Grails 2.2.1升级到Grails 2.4.2为什么Grails 2.4将包含域对象的数据库添加到我的数据库中?

修复了一切之后,我们注意到我们的一些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| 

我不明白这是为什么,并且不希望我们的生产数据库在我部署新版本后改变离子。

有谁知道这个额外的领域是什么,它来自哪里,它做了什么?

回答

0

我不认为额外的字段应该存在,因为这种关系是一个简单的ManyToOne,默认情况下应该由“issued_by_id”db字段表示。

尝试重新运行“dbm-generate-changelog”以检查它是否创建额外的字段。如果是这样,那么在Grails JIRA中提出一张票可能是值得的。

+0

它可能是值得的JIRA,但你不应该信任生成的代码,或在这种情况下,生成的更新日志。它很可能是正确的,但在应用更改之前,您必须验证它。该插件不承诺无错误的轻松迁移,只是它能让您获得大部分途径,并希望最大限度地减少人为干预的数量。 – 2014-09-04 15:25:50

+0

我运行了更改日志,并突出显示了更多不需要的更改。即使我们使用table-per-hierarchy并且实际生成的MySQL查询经过正确的共享表,升级为派生类生成了表。 – user3311492 2014-09-04 15:46:23

+0

这两个问题都看起来像JIRA值得关注的问题。看起来我在2.3.9上待了一段时间: – sola 2014-09-05 12:07:50

相关问题