2014-09-04 22 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

相關問題