首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
GeneratorDemo问题
zdhl
2016-08-29 11:16
使用GeneratorDemo中的方法生成的baseModel,Model和
Base
Model都正常,生成的_MappingKit.java出现复合主键,用的oracle但表里主键只有一个
项目:
JFinal
评论区
JFinal
2016-08-29 12:27
这个情况确实比较诡异,是不是设置了外键? 建议调试跟踪一下,有发现反馈一下
回复
zdhl
2016-08-29 15:50
没有外键,我把admins表主键ID改为ID1,生成后变成
arp.addMapping("ADMINS", "ID,ID,ID,ID1", Admins.class);
回复
zdhl
2016-08-29 15:52
只有最前面三个表的变成了多个ID在复合主键,其后的表生成的主键都没问题
回复
JFinal
2016-08-29 17:07
没有改为 ID1 之前有无问题?
回复
zdhl
2016-08-29 17:18
也有问题,改这前就是arp.addMapping("ADMINS", "ID,ID,ID,ID", Admins.class);
回复
zdhl
2016-08-29 19:44
现在还发现一个问题,设置gernerator.setGenerateDataDictionary(true);无法生成DataDictionary,生成Model和BaseModel的java文件都没问题
回复
JFinal
2016-08-29 21:02
@zdhl
我这里没有 oracle 的测试环境,无法重问题,希望你解决后发一篇分享出来,感谢支持 jfinal 社区
回复
zdhl
2016-08-29 22:23
@JFinal
目前还没找出解决办法,又试了一种方法发现一个很奇怪的现象,如果把表名admins改为admin,生成主正常,主键为一个ID,如果在改回到表名admins,问题依旧,以上是在oracle下操作的,同样的程序换成mysql就全部正常,难道gernerator.对oracle兼容出了问题?
回复
JFinal
2016-08-30 00:15
@zdhl
单步调试一下,看是哪一步出的问题,在 MetaBuilder 中设置断点,查看获取 id 的那部分代码执行的情况
回复
zdhl
2016-08-30 06:13
众
@JFinal
从buildPrimaryKey生成的主键开始不对的,会不会ojdbc6驱动问题?
protected void buildPrimaryKey(TableMeta tableMeta) throws SQLException {
ResultSet rs = dbMeta.getPrimaryKeys(conn.getCatalog(), null, tableMeta.name);
String primaryKey = "";
int index = 0;
while (rs.next()) {
if (index++ > 0)
primaryKey += ",";
primaryKey += rs.getString("COLUMN_NAME");
}
tableMeta.primaryKey = primaryKey;
rs.close();
}
当我把admins表主键id改为id1,调试发现 rs.getString("COLUMN_NAME")输出四个主键,分另为ID,ID,ID,ID1,
回复
JFinal
2016-08-30 09:59
@zdhl
正常情况下应该是输出一个主键值,换驱动吧,历史上多次出现过 oracle 驱动出现的问题,例如参数超过 8 个的时候出异常的问题,换驱动解决以后回来分享一下。
回复
zdhl
2016-08-31 11:12
升级oracle解决问题,换驱动不管事
回复
发送
我要反馈
热门反馈
扫码入社