EJB3を使用していますが、の更新に関連する問題がありますEntityManager
。
問題は、私のアプリケーションを多くの人が使用できるように準備する必要があることですが、1人の人が同じ日付を更新した場合、EntityManager
はその行を壊さず、x分後に他の人が行った変更を確認できません。
EntityManager
「select」、「insert」、「update」、または「delete」を実行するときに、を更新する方法を知っている人はいますか?
エンティティを更新してみてください。例:
public void create(MyEntity entity) {
getEntityManager().persist(entity);
getEntityManager().flush();
getEntityManager().refresh(entity);
}
public void edit(MyEntity entity) {
getEntityManager().merge(entity);
getEntityManager().flush();
getEntityManager().refresh(entity);
}
お役に立てれば。
これは並行性の問題です。ロックと並行性に関するJPA仕様のセクション3.4を読む必要があります。これには、楽観的および悲観的なロックに加えて、バージョン管理された属性の使用が含まれます。
さらに、セクション3.2.5では、エンティティインスタンスを更新する方法について説明します。