jfinal在oracle下生成代码ColumnMeta重复

最近又在玩oracle,发现jfinal在构建ColumnMeta时,未对重复的字典进行处理。当数据库中,存在多个用户同时对表有操作权限时,jdbc驱动包会返回多个主键、字段信息,更换驱动包仍然不能解决该问题,不知道是不是oracle的机制问题。


建议:由于同一个表绝对不会存在重名的字段,所以jfinal在构建ColumnMeta时加入检测机制,如果主键或列已经存在,则不再加入进去,就不会出现生成数据出现主键、dic中列重复的问题了。

评论区

JFinal

2019-07-06 15:55

新版本处理过,你可能用的是去年的老版本

jounzhang

2019-07-12 11:23

@JFinal 嗯,改了主键和model,生成字典表dic那个txt没有改到,我用最新的4.3试来的

JFinal

2019-07-12 11:27

@jounzhang 4.3 应该不会有重复主键生成的问题, 相关代码在 MetaBuilder 之中:
while (rs.next()) {
String cn = rs.getString("COLUMN_NAME");

// 避免 oracle 驱动的 bug 生成重复主键,如:ID,ID
if (primaryKey.equals(cn)) {
continue ;
}

if (index++ > 0) {
primaryKey += ",";
}
primaryKey += cn;
}

你单步调试上面代码看看是什么原因引起的

jounzhang

2019-08-08 14:26

@JFinal 这段时间没有登录未及时回复,原因是oracle jdbc多用户环境有表授权,会查询出多个用户的表,出现重复。需要指定Scame进行获取,但是使用conn的Scame莫名的报错,由于赶时间我就写死了scame未做深入研究。由于主键不会有重复的可能,所以用set去一下重可以很好的解决。

不知道怎么为jfinal贡献代码呢?

热门反馈

扫码入社