大家在使用JFinal的时候有没有遇到过在save的时候自动增加id列的情况?

YangWenjun 发布于 2014/06/23 21:15
阅读 1K+
收藏 0

@JFinal 你好,想跟你请教个问题:

今天在使用的时候发现一个bug, 就是在model调用Save()的时候,有时候会出现强制增加id列的情况。并非每次必现。在出现这种情况的时候,一定是数据库已经有了这个id,最后插入操作就会失败,通过try-catch 提示duplicate primary key.

后来每次插入操作的时候,我都显示的将id列进行删除,workaround OK

Defect defect = Defect.dao
			.set("userid", uid)
			.set("content", new Gson().toJson(ocl))
			.set("update_time", new Date())
			.remove("id");
defect.save();



上面倒数第二行,.remove("id") 显示的将id列删除绕过bug

看了源码没看出问题所在~~~

JFinal 版本: 1.8 jar with src

加载中
1
JFinal
JFinal

dao  对象只能用于查询不能用于承载数据,在 jfinal 手册上有红色字体明确说明,楼主这样做就对了:

Defect defect = new Defect()
  .set("userid", uid)
  .set("content", new Gson().toJson(ocl))
  .set("update_time", new Date());

defect.save();
Y
YangWenjun
多谢多谢! 原来数据承载是这个意思。。。
2
caiw
caiw
jfinal model的dao 是个stantic的model类,你第一次set save以后,其他地方再调用dao就会返回这个有数据的对象 ,这个时候你set save就会有id冲突了。因为第一次save 已经返回id 了。所以dao 只能用于查询,不能用于数据承载。
Y
YangWenjun
那如果要经常性的存储新的数据,你有什么建议吗?
返回顶部
顶部