【问题标题】:Hibernate do not save my records in the database but the primary key is incrementedHibernate 不会将我的记录保存在数据库中,但主键会递增
【发布时间】:2016-09-06 11:32:38
【问题描述】:

Hibernate 不会将我的记录保存在数据库中,但自动递增主键会递增。

我有 5 个用户,每个用户在 mysql 表 X 中有 10 条记录。因此 总共应该有 50 条记录。但是只有40个 没有显示错误。数据库中没有用户 3 的记录。但 主键从 1 到 50。这意味着它从 1 到 20,然后 从 30 到 50 开始。 21,22,23....等在记录的地方丢失 用户 3 应该是

我的应用程序日志说休眠保存方法被调用,没有异常。任何想法为什么会发生这种情况?我没有启用 mysql 二进制日志。

【问题讨论】:

  • 能否请您发布您的保存代码?你提交交易了吗?
  • @joc 代码太复杂太长,无法在此处发布。我正在遍历用户并将他们的记录添加到数据库中。因此,我使用了适用于其他用户但不适用于用户 3 的相同保存方法。
  • 您好像删除了一些数据。查一下,在哪里可以拨打delete from table
  • 如果您无法将其恢复到 MVCE 问题不符合 SO 规则......

标签: java mysql database hibernate


【解决方案1】:

我最好的猜测是您没有正确处理交易 如果您使用的是 Spring,请在您的保存方法上添加 @Transactional 注释。

如果是纯 java 代码,那么就这样管理事务

try {  
    session = sessionFactory.openSession();  
    tx = session.beginTransaction();  
    // save operation      
    tx.commit();  

} catch (Exception ex) {  
  ex.printStackTrace();  
  tx.rollback();  
} finally {
  session.close();
}  

【讨论】:

    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    相关资源
    最近更新 更多