动态生成出错


使用_JFinalDemoGenerator动态生成是报错:primaryKey required by active record pattern

评论区

JFinal

2017-02-09 14:40

active record 模式的根基是一个 model 对象唯一对应一条数据表记录,而这个对应关系需要使用primaryKey 主键这个东东

因此,生成 model 的时候需要相应的 table 有主键,如果确实不想使用主键,使用 generator.addExcludedTable(tableName) 将这些表排除在外,不生成 model即可,然后对这部分 table直接使用 Db + Record 模式进行操作

筱-舞瞳

2017-02-10 09:35

@JFinal 我创建的customer表中有主键啊,我就想动态生成相应字段的get与set方法,怎么弄啊

JFinal

2017-02-10 10:24

@筱-舞瞳 异常提示某张表没有主键,不要只看 customer 表,还要看其它表,生成是批量的

筱-舞瞳

2017-02-10 10:54

@JFinal 只创建了customer表,网站上的demo,我也试了,也是同一个错误

JFinal

2017-02-10 11:31

@筱-舞瞳 如果是用的“非mysql”数据库,例如 sql serlver,那么 generator 可能会反射出一些系统表,而不是自己创建的表,终极解决方法是对 com.jfinal.plugin.activerecord.generator.MetaBuilder.java 这个类进行单步调试,看是哪行代码,哪张表出的问题

pwq2016

2017-02-15 10:55

我也遇到该问题,在sqlserver2005中“只”新建一个表,设置了主键,按照例子跑_JFinalDemoGenerator,也是提示primaryKey required by active record pattern

qiushui90

2017-02-20 14:33

@JFinal 波总,数据库是mysql,对view生成model。也会又这个问题,2.2版本是可以的,请教下怎么处理呢?

JFinal

2017-02-20 15:32

@qiushui90 看下这篇贴子:http://www.jfinal.com/feedback/908

筱-舞瞳

2017-02-20 21:55

@JFinal 问一下,update方法必须 表中存在id才能更新吗

筱-舞瞳

2017-02-20 21:59

@JFinal userRole表中有userID与roleId两个字段,我先用userId查询出UserRole对象,再设置set("roleId",roleId),最后UserRole对象调用update(),报sql错误:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where `roleId` = 36 and `userId` = 8' at line 1”

JFinal

2017-02-21 00:09

@筱-舞瞳 sql 语句错了,将完整的 sql 贴出来

筱-舞瞳

2017-02-21 09:32

@JFinal isSuccess = UserRole.dao.findByUserId(user.getId()).set("roleId", roleId).update();就这一句

JFinal

2017-02-21 11:35

update() 这行代码执行时会生成一条 sql,看下这条 sql 有啥不对的就好,输出 sql 的方法,配置一下: arp.setShowSql(true);

筱-舞瞳

2017-02-22 19:54

@JFinal 请教一下sql防注入问题:比如我 想查找 :select * from user where id like ? and roleId like ? and name like ?
出现错误

JFinal

2017-02-22 20:38

@筱-舞瞳 问题是除了你之外,没人知道是什么错误,所以没法回复你

筱-舞瞳

2017-04-12 11:50

@JFinal 重新安装的eclipse,连不上mysql,出异常:java.math.BigInteger cannot be cast to java.lang.Long 怎么回事?

hiberk

2017-04-13 10:38

@JFinal 用的是JFINAL3.0 完全照搬的demo示例代码。直接启动项目流程没有问题。但是运行generator生成器就会报这个错 这个SQL语句都是demo里面的。 所以是有主键的。

JFinal

2017-04-13 11:22

@hiberk 确定是 mysql 数据库? 注意切换方言

筱-舞瞳

2017-04-13 17:23

@JFinal 解决了,数据库版本问题。上传文件时怎样重命名,使用file的renameto方法只能操作单文件,多个就不行了

JFinal

2017-04-13 17:25

@筱-舞瞳 多个用 UploadFile[] fileList = getFiles(),然后用一个循环处理一下

筱-舞瞳

2017-04-13 17:54

@JFinal getFiles()不是返回的是List集合吗,我之前用List uploadFiles = getFiles()循环只能重命名一个,其他就不行了

筱-舞瞳

2017-04-13 17:58

@JFinal解决了,是表单name属性问题。

筱-舞瞳

2017-04-14 17:07

@JFinal 问一下:如何在jsp中用jstl使用Record

热门反馈

扫码入社