JFinal

登录 注册

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

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

主键名称是cure_id,

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

我哪里代码写错了吗?

评论

  • 04-12 11:18
    cure是new RuleCure()出来的吗?
  • 04-12 11:27
    @tranfer 我是用getModel获得的。
  • 04-12 12:25
    设置主键自增
  • 04-12 13:08
    @JFinal 这个表原来就是主键自增的。save是成功的,而且cure_id是自增的。
  • 04-12 13:15
    @JFinal 补充一点,我用的版本是3.4的,会不会有这个问题。
  • 04-12 14:21
    @JFinal 大神,有啥办法吗?捉急啊,卡在这里了。
  • 04-12 14:41
    @JFinal 写了一段测试代码:
    RuleCure cure=new RuleCure();
    cure.setCureId(0);
    cure.setDirection("dddddd");
    cure.save();
    System.out.println("id============="+cure.getCureId());

    打印的结果还是 0
  • 04-12 14:45
    @rirai cure.setCureId(0); 都自增了,这行就没必要了
  • 04-12 14:57
    @JFinal 单步跟踪了一下,问题出在下面一行上了
    if (model.get(pKey) == null || isOracle()) {
    如上面 那位所说的 一旦赋了0值,条件就不满足了,所以没有更新数据。
  • 04-12 15:42
    @rirai 你的 id 值自己赋值进去了,直接 get 就出来了,这个就与 jfinal 完全无关了

    更新是用 update() 不是 save()
  • 04-12 15:48
    如果用的是 jfinal 3.4 要注意这个问题:
    http://www.jfinal.com/share/979

    3.4 升到 3.8 无需考虑全是好处:
    https://www.jfinal.com/doc/14-1
  • 04-12 21:43
    @JFinal 谢谢大神,我是从表单那里getModel得到的class,如果是新建的表单,我前端默认给id赋了0,所以有这个问题的。这个系统开发多年了,一直想升级jfinal版本,但是又怕有各种问题,所以一直拖着。
  • 发送