dao进行Save后无法得到主键的最新值

arp.addMapping("rule_cure", "cure_id", RuleCure.class);

主键名称是cure_id,

cure.save()成功后,调用 cure.getCureId(),取出的主键值还是为0?

我哪里代码写错了吗?

评论区

tranfer

2019-04-12 11:18

cure是new RuleCure()出来的吗?

rirai

2019-04-12 11:27

@tranfer 我是用getModel获得的。

JFinal

2019-04-12 12:25

设置主键自增

rirai

2019-04-12 13:08

@JFinal 这个表原来就是主键自增的。save是成功的,而且cure_id是自增的。

rirai

2019-04-12 13:15

@JFinal 补充一点,我用的版本是3.4的,会不会有这个问题。

rirai

2019-04-12 14:21

@JFinal 大神,有啥办法吗?捉急啊,卡在这里了。

rirai

2019-04-12 14:41

@JFinal 写了一段测试代码:
RuleCure cure=new RuleCure();
cure.setCureId(0);
cure.setDirection("dddddd");
cure.save();
System.out.println("id============="+cure.getCureId());

打印的结果还是 0

tbynet

2019-04-12 14:45

@rirai cure.setCureId(0); 都自增了,这行就没必要了

rirai

2019-04-12 14:57

@JFinal 单步跟踪了一下,问题出在下面一行上了
if (model.get(pKey) == null || isOracle()) {
如上面 那位所说的 一旦赋了0值,条件就不满足了,所以没有更新数据。

JFinal

2019-04-12 15:42

@rirai 你的 id 值自己赋值进去了,直接 get 就出来了,这个就与 jfinal 完全无关了

更新是用 update() 不是 save()

JFinal

2019-04-12 15:48

如果用的是 jfinal 3.4 要注意这个问题:
http://www.jfinal.com/share/979

3.4 升到 3.8 无需考虑全是好处:
https://www.jfinal.com/doc/14-1

rirai

2019-04-12 21:43

@JFinal 谢谢大神,我是从表单那里getModel得到的class,如果是新建的表单,我前端默认给id赋了0,所以有这个问题的。这个系统开发多年了,一直想升级jfinal版本,但是又怕有各种问题,所以一直拖着。

热门反馈

扫码入社