使用hibernate的主键冲突问题?

时间:2013-02-27 10:57:52

标签: java hibernate

我正在使用Hibernate。服务作为Web服务公开。该服务将由2个应用程序调用。服务方法将记录保存到数据库中。

ServiceClass.java:
------------------

//Here Transaction will start
public void saveRecord(SampleEntity entity){

someDAO.saveData(entity);

}


SomeDao.java
-----------------

public void saveData(SampleEntity entity){
  //record is saved using saveOrUpdate method
}

如果两个具有相同ID的应用saveRecord调用了at a time方法,则会引发PK violation exception

两个应用程序都在发送具有相同ID的记录。

当我们使用saveOrUpdate时,如果记录已经存在,它应该更新记录。

1 个答案:

答案 0 :(得分:1)

如果这是在事务中,则该行将被锁定(并且索引不会更新),直到事务提交为止。因此,如果更新发生在提交之前,它可能看起来像具有相同PK的两个插入。