trl20121212 2016-01-22 16:26 采纳率: 33.3%
浏览 2110
已采纳

Hibernate 语句执行顺序问题

代码:
private static void editInfo() {
    Session session = null;
    try {
        session = HibernateUtil.getSession();
        if (session != null) {
            session.beginTransaction();
            Person p = new Person("王三", 22, "男", "北京");
            session.save(p);
            session.delete(p);
            p.setId(null);
            session.save(p);
            session.getTransaction().commit();
        }
    } catch (Exception ex) {
        if (session != null) {
            session.getTransaction().rollback();
        }
        ex.printStackTrace();
    } finally {
        HibernateUtil.CloseSession();
    }
}
控制台显示:
Hibernate: 
insert 
into
    PERSON
    (NAME, AGE, GENDER, ADDRESS) 
values
    (?, ?, ?, ?)

Hibernate:
delete
from
PERSON
where
ID=?
Hibernate:
insert
into
PERSON
(NAME, AGE, GENDER, ADDRESS)
values
(?, ?, ?, ?)

按照Hibernate的规定执行应该是insert,insert,delete,但不知道为什么这里是insert,delete,insert,请各位大哥指教一下。
  • 写回答

3条回答 默认 最新

  • JAVA小皇帝 2016-01-22 17:36
    关注

    数据库执行sql时,遵循事务原则。按照你的程序执行顺序就应该是save(insert)、delete、save(insert)呀。还有你的ID难道不是唯一的吗?为什么能设置为空很难理解。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题