0

我正在使用Grails框架。我想知道的是如何Grails領域類的方法是動態生成每個域類Grails應用程序像Grails如何爲域類自動/動態創建方法?

計數, countBy, 個createCriteria, 刪除, 丟棄, 錯誤, 的executeQuery, 的executeUpdate, 存在, fetchMode, 發現, 的findAll, findAllBy, findAllWhere, findBy, findOrCreateBy, findOrCreateWhere, findOrSaveBy, findOrSaveWhere, findWhere, 第一, 得到, GETALL, getDirtyPropertyNames, getPersistentValue, hasErrors, 的hasMany, hasOne, IDENT, }這種, isAttached, isDirty, 最後, 名單, listOrderBy, 負載, 鎖, 合併, 讀, 刷新, 保存, 驗證, 其中, withCriteria, withNewSession, withSession, withTransaction

回答

-1

這是通過metaprogramming完成後,你可以動態地添加方法和屬性的任何類。

SomeClass.metaClass.newMethod = {-> // do my stuff here } 

您應該保守地利用這一點避免與嘗試同樣的方法添加到同一類的其他庫的衝突。

希望這會有所幫助。

0

在Grails 3.x中沒有使用元編程來擴展域類。我認爲他們使用AST代替

+0

「在Grails 3.x中,沒有元編程用於擴展域類。」 - 這不完全正確。我們仍然使用運行時元編程來處理動態查找器,而這些動態查找器在編譯時無法安裝。過去用運行時元編程完成的許多其他事情已被基於特徵的解決方案或自定義AST轉換取代,但運行時元編程仍然在Grails 3中使用。 –

0