首先使用appfuse是應該盡量避免以S結尾的單詞來作為數據表名,但是很多時候并不是這樣的。數據表的名字不能改變的時候我們只能從其他方面想辦法了!
在google搜索相關的信息,只找到這一篇文章是有用的,并給予我修改的思路。
http://jira.codehaus.org/browse/MIDDLEGEN-13?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel
The algorithm for creating singular versions of table names doesn't account for singular words that end in "s". For example, a table called MumbleFooStatus becomes MumbleFooStatu
Suggestion #1: in Util.singularise(), check for a vowel other than "e" before a final "s".
Suggestion #2: change the default behaviour to not singularise tablenames. I think it's bad form for a tool to change the names of my data objects without my consent.
Workarounds: specify table names in build.xml, or if you're using the hibernate plugin, fix the table names in the <dbname>-prefs.properties generated by the plugin and re-run middlegen.
第二點中提到改變middlegen的默認行為讓其不去單數化數據表名。
我們要做的有幾個步驟(粗略的看了middlegen源碼做的修改):
1:下載middlegen源碼,下載地址
http://sourceforge.net/project/downloading.php?group_id=36044&use_mirror=jaist&filename=middlegen-2.1-src.zip
2:解壓并編輯MiddlegenTask.java中的代碼
把
private static boolean _singularize = true;
改成
private static boolean _singularize = false;
3:重新編譯并打包成jar,在middlegen的根目錄下輸入命令行命令:ant jar即可
4:將新的middlegen-2.1.jar替換目標項目(已生成)中extras\middlegen\lib\middlegen-2.1的middlegen-2.1.jar
這樣,在生成以S結尾的數據表名對應的代碼就不會出錯了!
但是這樣做始終有不好的地方:在表示對象復數的地方就會出現不盡人意的代碼了,但是不管怎么樣,代碼還是生成出來了,后期的工作就可以依靠手動去修改。
所以還是盡量去遵循不以S結尾的單詞作為數據表名。
Let life be beautiful like summer flowers and death like autumn leaves.