2017-12-13 10:31
jfinal 的 Model 使用的是 Active Record 模式,该模式的一个基本要求是,一个 model 对象唯一对应一条数据表中的记录,而对应的机制就是使用主键
如果没有主键的话,Active Record 模式就无从谈起。建议每个表都要有主键,看一下《阿里巴巴Java开发手册(终极版)》里头的第五章建表规约中第 9 条,表必须要主键,阿里比较狠强制要求主键名为 "id"
如果没有主键,但希望使用 jfinal 的 ActiveRecordPlugin,可以用一下 Db + Record 模式,这里头的大部分 API 是不需要主键的
还有一个可行的办法是为原先没有主键的表创建一个名为 "id" 的主键,让其为自增,而在 java 代码中不去用这引主键就可以了,当主键不存在
2017-12-12 20:25
@wyrdtc 你的反馈已经做到了 jfinal 3.4 之中,多多关注社区动态,jfinal 3.4 发布时试用一下这个功能,感谢反馈
2017-12-12 18:23
@mld2024 如果还是不行的话,单独 new 出来那个生成字典文件的生成器,单独写个 main 方法去生成,我怀疑是 MetaBuilder 中读取了一次 meta 信息,在 DirctionaryGenerator 中再去读的时候 oracle 主动关闭了流,这个在其它数据库中是可以的
2017-12-12 18:07
@mrbai2018 locale 用哪个取决于你希望用哪个,你也可以通过判断用户浏览器的 locale 来启用一个,启用的时候还要判断你的项目中有没有准备好这个 locale 下的国际化资源文件,如果没有准备好,就要用别的来代替
使用 I18n.use() 系列的方法就可以获取到一个 Res 对象,然后通过穿上 res 对象就可以很方便获取到你想要的数据了
2017-12-12 18:03
@Pencilso batchSave 就是以第一个元素为蓝本生成 sql 的,这个 API 必须要生成 sql,而且必须只能生成一条 sql,那么问题的焦点就在于以哪条元素为蓝本生成
jfinal 选择第一个元素为蓝本,这个在这个方法的注释中有说明