sql >> データベース >  >> NoSQL >> MongoDB

TransactionRequiredException更新/削除クエリの実行

    ただし、同様の問題についてWebを精査した後、これが状況に役立つかどうか(つまり、まだ存在するかどうか)はわかりません。

    更新を実行するために、永続性EntityManagerからネイティブクエリを作成していました。

    Query query = entityManager.createNativeQuery(queryString);
    

    次のエラーが発生しました:

    原因:javax.persistence.TransactionRequiredException:更新/削除クエリの実行

    多くのソリューションでは、メソッドに@Transactionalを追加することを提案しています。これを実行しても、エラーは変わりませんでした。

    一部のソリューションでは、EntityManagerにEntityTransactionを要求することを提案しています。 beginを呼び出して自分でコミットできるようにします。これにより、別のエラーがスローされます:

    原因:java.lang.IllegalStateException:共有EntityManagerでトランザクションを作成することは許可されていません-代わりにSpringトランザクションまたはEJBCMTを使用してください

    次に、ほとんどのサイトがアプリケーション管理のエンティティマネージャーを使用するためのものであり、コンテナー管理を使用するためのものではないと言う方法を試しました(Springはそうだと思います)。これはjoinTransaction()でした。 。

    @Transactionalがある メソッドを装飾してからjoinTransaction()を呼び出す query.executeUpdate()を呼び出す直前のEntityManagerオブジェクト ネイティブクエリの更新が機能しました。

    これが、この問題を経験している他の誰かに役立つことを願っています。



    1. Mongodb、$lookupを使用した集計クエリ

    2. 合計数を取得するためにMongoDBで合計を集計するにはどうすればよいですか?

    3. マルチコアサーバーのクラスターでsocket.ioを使用する良い方法はありますか?

    4. phpRedisのクラスターへの移行とコンシステントハッシュ