2016-09-03 21:07

@java180 手册 5.3 中的例子,User.dao 后面紧跟的是一个查询方法,而不是 set、update、save 方法。原因是 dao 对象是 static 修饰过的,那么地方面使用 User.dao.save()、update()、set() 之类的方法时,都是共享的这一个 dao 对象,假如线程 A 往里面 set 一个值进去,线程 B 再 save() 或者 update()这样数据就乱套了,这个是最基本的 java 线程安全问题

2016-09-02 20:20

@不懂程序 换成 DruidPlugin,不要再使用 C3p0Plugin。此外,打印 DEBUG 级别的日志是配置问题,下载 jfinal demo ,直接且里面的 log4j.proerties 文件即可

2016-09-02 13:59

没有内置,我前面所说的:“_patinate.html 所使用的 css 文件“ 是指 jfinal demo 项目中的 WebRoot 目录下 css 子目录下的 manage.css 文件

2016-09-02 13:47

如果只改样式,只需要改下 _patinate.html 所使用的 css 文件

2016-09-02 13:34

通常这是前端的事,如果你是全栈开发者也可以自己做

2016-09-02 13:33

修改 _paginate.html 以及相关的 css 文件即可

2016-09-02 12:45

oracle 之下如果出现异常,建议设置不生成字典文件,由于没有测试环境 oracle 下的字典文件测试做得不够充分

2016-09-02 12:12

对于 model 来说,只要在 arp.addMapping(...) 一次性搞定,在使用过程中不再需要处理,而 Db.find/query 由于没有建立 table 的 meta 映射,所以,需要在使用过程中临时指定

2016-09-02 12:10

@java180 再补充一句:无论是 model 还是 Db,当主键名称为 "id" 时就不需要指定了,在没有指定 idName 时,jfinal 会使用默认的名称 "id",这个默认名称还可以在 Dialect 中可以自己指定

2016-09-02 11:54

@java180 其实我的第一个回复已经说过了,model 主键要使用 arp.addMapping(...) 的第二个参数指定 idName,Db 的相关方法需要临时指定 idName。
此外, dao 的 update() 绝对不可以去调用它,这个在手册中强调过,dao 是全局共享的,只能用于查询

2016-09-02 11:07

@java180 调试一下,看 update() 的时候,主键所对应的值是不是为 null? 没有值的时候才会报这个异常,你是不是在取值的时候没有取主键值?

2016-09-02 10:43

@java180 感谢支持社区发展

2016-09-02 10:43

@java180 多多关注社区动态,社区会一直有好用的功能添加

2016-09-02 10:40

@java180 一定可以的,可能是别的原因造成的,例如eclipse自动编译是否打开,修改的代码是否生效之类的错误

2016-09-02 10:38

@java180 arp.addMapping(...) 的时候指定了 idName 没有? 方法原型是:addMapping(String tableName, String primaryKey, Class> modelClass),注意第二个参数就是主键名称,如果是复合主键就用逗号分隔: "id1, id2"