Export to GitHub

rapid-framework - issue #53

数据库表中列名使用下划线的问题


Posted on Jun 23, 2010 by Happy Ox

rapid版本:rapid-framework-3.5.1.3.zip

使用的相关插件组合是:jdbc+Struts2

按如下步骤重现错误: 1.数据库列名为 P_MULTIPLY CO_NO 2.最后SQL中会变成 PMULTIPLY CO_NO

期待的结果是: P_MULTIPLY CO_NO

查看代码知这部分转换存在于 cn.org.rapid_framework.jdbc.sqlgenerator.metadata.MetadataCreateUtils 中toUnderscoreName函数 1.数据库表对应的MODEL中相应字段为 pmultiply coNo 2.toUnderscoreName函数中会通过判断下一个字符是否为大写来添加下划线

因此问题的关键在于创建列名时对于 单字符+下划线+其余字符的列名转换存在问题

对于 P_MULTIPLY 列应该转化为 pMultiply 而非 pmultiply

Comment #1

Posted on Jun 23, 2010 by Happy Ox

public static String makeAllWordFirstLetterUpperCase(String sqlName) { String[] strs = sqlName.toLowerCase().split("_"); String result = ""; String preStr = ""; for(int i = 0; i < strs.length; i++) { if(preStr.length() == 1) { result += strs[i]; }else { result += capitalize(strs[i]); } preStr = strs[i]; } return result; }

好像问题就在这里 if(preStr.length() == 1) { result += strs[i]; 这里为什么要加上一个判断呢?

Comment #2

Posted on Jun 23, 2010 by Grumpy Elephant

参考这里: http://code.google.com/p/rapid-framework/wiki/rapid_sqlgenerator

可以使用JPA的annotation,现只支持@Table,@ID,@Column,@Transient,示例如下:

@Column(name="ann_age")

Comment #3

Posted on Jun 23, 2010 by Grumpy Elephant

对于 P_MULTIPLY 列应该转化为 pMultiply 而非 pmultiply

我现在将单字母转为pmultiply认为是正常的。

Status: WontFix

Labels:
Type-Defect Priority-Medium