我有两个表来存储表单的答案和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数据库已删除此记录。
答案 0 :(得分:3)
您可能没有提交交易。对于MySQL使用的自动增量列,save
方法会导致插入虚拟记录,以便Hibernate可以检索新的ID值(注意save
返回一个对象,这是新的ID) 。 MySQL现在已将该值标记为正在使用,这就是为什么当您手动插入时ID看起来像是“跳了”。