session.save(m);之后无法判断是否成功添加,只能判断是否成功执行。
因为只有commit之后才能判断添加成功还是失败。出错之后,程序停掉是什么意思,不执行还是其他的现象?!

解决方案 »

  1.   


    比如我数据库里已经有一条记录了username="admin"
    然后我现在又添加了一条记录username也等于"admin",而我弄得表中username是有唯一约束的,
    这时候肯定是会报错的啊,但是我已经try-catch了session.save()方法了,按理说没有保存成功但是程序还是会往下走啊但是这里它是直接就停掉了,没有往下走了
      

  2.   

    首先这个问题先放下,你的数据库设计就不应该用username做为主键,一般情况下,业务字段尽量避免做为主键,不然到时候业务庞大后很难扩展
    其次,对于你上述问题,hibernate内部也是拿到本身表中最大的主键值或是seq然后+1,如果你用username,不一定他会这样做。
    再不然,就看看是否主键符合JPA的规范,在主键上注解@Id
      

  3.   

    在ts.commit()才会向数据库发sql。所以你把这句加到result = true;之前.
    ts.commit(); // here add
    result = true;