マルチスレッドプログラムで以下のコードを実行すると、例外が発生します:-
org.hibernate.exception.ConstraintViolationException: エラー: 重複するキー値が一意の制約 "value_pkey" に違反しています
@Stateless
@TransactionAttribute(javax.ejb.TransactionAttributeType.REQUIRED)
public class GetHelloBean{
@PersistenceContext(unitName = "test-unit")
private EntityManager entityManager;
public Hello<?> insertOrUpdateHello(Hello<?> value) {
Hello<?> existing = null;
try {
existing = this.entityManager.find(Hello.class,
value.getKey());
if (existing != null) {
value = this.entityManager.merge(value);
} else {
this.entityManager.persist(value);
}
this.entityManager.flush();
} catch (Exception e) {
this.logger.error(" value not saved : " + value.toString()
+ " of class " + value.getClass() + ":" + e.getMessage());
}
//
return value;
}
}
誰かが理由を説明できますか?また、これをどのように処理できますか?