我已將所有域類分離到命名空間中,並希望GORM使用表前綴在數據庫級別保留此分隔。GORM:使用域名稱空間自動爲每個表名添加前綴
例如:
auth.User -> auth__user
auth.Group -> auth__group
auth.Role -> auth__role
cms.Page -> cms__page
cms.Post -> cms__post
cms.Image -> cms__image
我正在尋找一種方式來做到這一點,而無需編寫每個域類裏面的表名。
我已經讓Hibernate識別一個自定義的NamingStrategy,但是我傳給classToTableName()的字符串只是簡短的類名;命名空間無處可見。
有沒有一種方法可以編寫一個知道類命名空間是什麼的NamingStrategy? (possibly not)
有沒有其他automagic的事情我可以試試?也許有些代碼可以編寫一次並應用於所有的域類?
我看到Grails的插件設置爲grails.gorm.table.prefix.enabled
,somehows管理將插件名稱作爲表格的前綴。我可以使用相同的技術來添加我的名稱空間嗎?我查看了消息來源,但我找不到grails.gorm.table.prefix.enabled
被讀取和應用的地方。
您是否嘗試過在域類中使用靜態'mapping = {table'your_custom_name'}?而且你也可以創建自己的插件來訪問'grails.gorm.table.prefix.enabled'。如果我正確理解你的問題。 – wwarlock 2014-09-08 12:42:36
是的,我可以在每個班級編寫映射表。但是我正在尋找一種通用的解決方案來寫一次而忘記。編寫我自己的插件是我沒有考慮過的,但它可能是一種選擇,向前邁進。 – Tobia 2014-09-08 13:21:07
您可以爲域類編寫自己的註釋或AST。但是您必須提供您的註釋/ AST將在grails AST之前運行。 – wwarlock 2014-09-08 19:01:34