2012-11-08 50 views
0

有一個域名類別,由Grails注入字段id。實例化與地圖結果這樣一類在id == nullGrails域類的newInstance(map)?

def obj = DomainClass.class.newInstance(id:100, name:'Joe') 
assert obj.id != null // it fails 

什麼是分配Grails中所有隱藏屬性的最佳做法?

回答

1

您可以自定義GORM如何使用DSL爲數據庫生成標識符。默認情況下,GORM依靠本地數據庫機制來生成ID。檢查文檔到customizes the way the identifier for a domain class is generated

static mapping = { 
    id generator: 'assigned' 
} 

有過就當發電機被分配構造函數初始化ID的錯誤,看看這個博客文章與這個bug暫時的解決辦法: Assigning ID for domain objects in Grails via constructor

+4

這不是一個錯誤,它是故意的。它是爲了保護黑客不會將id的不同值發送到更新方法。同樣,'version','class'和'metaclass'在默認情況下被排除,以減少用'thing.properties = params'等代碼故意或錯誤地改變它們的可能性。如果您的工作流程有意義,您仍然可以手動分配該ID。 –

+0

感謝您的澄清。我想說的是,JIRA中有一個錯誤報告。 –