Hibernate:10个或更多用户同时插入记录时出现异常

时间:2016-10-18 15:12:08

标签: java hibernate spring-mvc

我有一个适用于Spring MVC和Hibernate的应用程序。如果单个用户插入记录,但是如果多个用户同时同时插入记录,则它可以正常工作。它显示了这个错误" Hibernate:org.hibernate.AssertionFailure:null id in"。我可以观察到这种情况正在发生,因为hibernate对所有记录的自动主要id genaration可能因为同一时间而相似。不确定。请帮忙。需要一个关键的解决方案。

我使用的代码如下

@Transactional
public Account addAccount(Account acct) {

      session = sessionFactory.getCurrentSession();
      session.save(acct);
      session.flush();
      session.clear();
      return acct;

}

1 个答案:

答案 0 :(得分:0)

如果您遇到并发问题,请考虑创建此类:

public AccountConcurrencyUtils {

    public static synchronized Account addAccount(Account acct, SessionType session) {
        session = sessionFactory.getCurrentSession();
        session.save(acct);
        session.flush();
        session.clear();
        return acct;
    }

}

最后在你的代码中:

@Transactional
public Account addAccount(Account acct) {
    return AccountConcurrencyUtils.addAccount(acct, session);
}

这应该可以防止并发问题,如果您使用Java 7,应该有更好的解决方法,但这应该是 修复你的问题,如果它是关于并发,如果没有,问题可能是其他。

我更新了代码,把你正在使用的Session类型,这应该适用于Java 5这样的旧Java版本