1

私はHibernateを使用しています。サービスはWebサービスとして公開されます。このサービスは、2つのアプリケーションによって呼び出されます。serviceメソッドは、レコードをデータベースに保存します。

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を持つsaveRecord2つのアプリケーションによって呼び出された場合、がスローされます。at a timePK violation exception

両方のアプリケーションが同じIDでレコードを送信しています。

使用しsaveOrUpdateているので、レコードがすでに存在する場合は更新する必要があります。

4

1 に答える 1

1

これがトランザクション内にある場合、トランザクションがコミットされるまで行はロックされます (インデックスは更新されません)。そのため、コミット前に更新が行われた場合、同じ PK を持つ 2 つの挿入のように見える場合があります。

于 2013-02-27T13:37:04.080 に答える