记录尚未保存,但数据库中自动增加的ID已增加

时间:2011-09-15 21:01:50

标签: hibernate

我有两个表来存储表单的答案和HTML模板。表答案有外键,指的是html_templates表中的主键。当我尝试将记录添加到答案表时出现问题。

//session opened
    Answers answers = new Answers();
    answers.setAnswer("answer...");
    //there is a record in getHtmlTemplates with 4 as an id
    answers.setHtmlTemplates(getHtmlTemplates(4));
    session.save(answers);

程序在没有任何warrings的情况下执行,但DB(MySql)中没有记录。当我手动向answers添加记录时,id会增加多个。实际上,当所有操作都在事务中时,会添加一条记录。发生了什么?看起来DB数据库已删除此记录。

1 个答案:

答案 0 :(得分:3)

您可能没有提交交易。对于MySQL使用的自动增量列,save方法会导致插入虚拟记录,以便Hibernate可以检索新的ID值(注意save返回一个对象,这是新的ID) 。 MySQL现在已将该值标记为正在使用,这就是为什么当您手动插入时ID看起来像是“跳了”。