数据库表中列名使用下划线的问题
Closed this issue · 3 comments
GoogleCodeExporter commented
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
Original issue reported on code.google.com by neolf....@gmail.com
on 23 Jun 2010 at 6:41
GoogleCodeExporter commented
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];
这里为什么要加上一个判断呢?
Original comment by neolf....@gmail.com
on 23 Jun 2010 at 6:54
GoogleCodeExporter commented
参考这里: http://code.google.com/p/rapid-framework/wiki/rapid_sqlgenerator
可以使用JPA的annotation,现只支持@Table,@ID,@Column,@Transient,示例如
下:
@Column(name="ann_age")
Original comment by bad...@gmail.com
on 23 Jun 2010 at 6:58
- Changed state: WontFix
GoogleCodeExporter commented
对于 P_MULTIPLY 列应该转化为 pMultiply 而非 pmultiply
我现在将单字母转为pmultiply认为是正常的。
Original comment by bad...@gmail.com
on 23 Jun 2010 at 7:00