問題タブ [transactional]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - org.postgresql.util.PSQLException:ラージオブジェクトは自動コミットモードでは使用できません
Spring、JPA、Hibernate、Postgresqlを使用しています。データベースにファイルをアップロード/挿入できます。しかし、ファイルにアクセスしようとするとエラーが発生しました。
JSPファイルからピースコードを削除すると、問題ありません。
PurchaseOrderを取得するメソッド:
2つのエンティティの関係は次のとおりです。
PurchaseOrderQuotes
はっきりしていません。ごめん。ここでは、BLOBファイルに直接アクセスせず、その親オブジェクトを取得します。
ファイルをアップロードして、1つのpurchaseOrderを問題なく取得できました。このピースコードをJSPファイルに追加した場合にのみエラーが報告されます。ただし、FetchType.LAZYを設定しているため、BLOBフィールドにアクセスしようとしないでください。混乱します。
hibernate - ハイバネート トランザクション、コミットはアクティブなトランザクションなしでは無効
まず第一に、私の英語がとても下手で申し訳ありません。私は休止状態を使用するのは初めてなので、上級者全員に尋ねたい質問があります。ここに条件があります:ビューにzkを使用しています.1つのビューには、(追加)、(保存)、(キャンセル)ボタンのあるツールバーがあります。だから私が欲しいのは、ユーザー klik (追加) hibernate が新しいトランザクションを開始し、ユーザーがそのユーザー klik (保存) の後にデータを挿入するときです。この (保存) ボタン イベントで、hibernate は commit を呼び出してデータをデータベースに挿入します。
問題は、ユーザー klik が保存するときです。プログラム フローを 1 回トレースした後、「アクティブなトランザクションがないとコミットできません」というメッセージが表示され、ユーザーが (保存) ボタンを klik すると、以前に開始したトランザクションがアクティブではなくなりました。
## 私が聞きたいのは、まだコミットしていないのになぜトランザクションが非アクティブなのかということです。##
私は休止状態と休止状態で春を使用しています.current_session_context_class = Thread
助けてくれてありがとう
java - mode=aspectj で奇妙な動作をする Spring @transactional
何日も自分のアプリケーションで Spring トランザクションを適切に動作させようとしてきましたが、今ではコミュニティに頼るしかありません。よろしくお願いします。
私のアプリケーションには、保護されたオーバーライドされたメソッドに @Transactional で注釈を付け、抽象親クラスからこのメソッドを呼び出す必要があるという特定の要件があります。私が読んだことから、プロキシは使用できず、mode=aspectj を使用する必要があります。
まず、いくつかの構成:
ID_DataAccessor のメソッドで @Transactional アノテーションを使用すると、接続はトランザクション ( DataSourceUtils.isConnectionTransactional(c, dataSource) == true
) になります。ただし、メソッドが完了するとすぐにトランザクションがコミットされるため、これは役に立ちません。DataAccessor のメソッドを呼び出すメソッドで @Trasnactional を使用すると、(から) DataAccessor で取得された接続DataSourceUtils.getConnection(dataSource)
はトランザクションではありません。さらに、DataSourceTransactionManager.doGetTransaction() にブレークポイントを配置しました。これは、@Transactional アノテーションが接続を取得するメソッドに直接ある場合にのみ呼び出されます。用語をオーバーロードして申し訳ありませんが、@Transactional アノテーションがスタックに反映されていないようです。
私は完全に困惑しています。助けてください!:)
hibernate - エンティティの削除時に StaleObjectStateException を回避する
同時に(Spring)トランザクションサービスに入る2つの同時スレッドがあります。
Hibernate を使用して、サービス メソッドはいくつかのエンティティをロードして処理し、エンティティを見つけて DB から削除します。擬似コードは次のとおりです。
2 つのスレッドが同時に同じパラメーターを渡す場合、両方が同じエンティティを「検索」し、両方が を呼び出しますdelete
。org.hibernate.StaleObjectStateException
そのうちの 1 つは、セッションが閉じているときに をスローして失敗します。
例外がスローされずに、両方のスレッドがエンティティを返すことを望みます。これを達成するために、次のように、エンティティを削除する前に(「select ... for update」で)ロックしようとしました:
load()
代わりに使用するのget()
は、hibernate API によると、既にセッションにある場合は get がエンティティを返し、load はエンティティを再読み取りする必要があるためです。
2 つのスレッドが同時に上記の方法に入ると、そのうちの 1 つがロック ステージをブロックし、最初のスレッドがトランザクションを閉じると、2 番目のスレッドが呼び出されてorg.hibernate.StaleObjectStateException
. なんで?
ロックされたロードが null を返さないのはなぜですか? どうすればこれを達成できますか?
java - Seam @Transactional アノテーションが機能しない?
次のような Seam コンポーネントで @Transactional アノテーションを使用しています。
「その他のもの」セクションでは、いくつかの Hibernate エンティティを変更していますが、例外がスローされるバグがありました。例外が原因でトランザクションがロールバックされていないことに気付きました (変更されたエンティティはデータベースで変更されたままです)。そのため、「トランザクション アクティブ」ログを追加しました。このコードを実行すると、isActive() は false を返します。
足りないものはありますか?トランザクションがアクティブでないのはなぜですか?
念のため、RESTEasy アノテーションを使用してメソッド呼び出しをトリガーする別のコンポーネント内から Seam コンポーネントを使用しています。
ruby-on-rails - Rails と Mailchimp - ようこそメール
ユーザーが当社の Web サイトに登録するたびに、ウェルカム メールを送信する必要があります。
このため、mailchimp でキャンペーンを作成しました。
ヒト科の宝石も接続しました。
そのため、ユーザーをグループ (welcome_email グループ) に追加するたびに、新しいユーザーにキャンペーンを再送信したいと考えています。メールごとに新しいトランス キャンペーンを再作成する必要がありますか?
同じキャンペーンを使用して、新しいユーザーに再送信することはできますか?
これを達成する最良の方法は何ですか?
spring - Spring @transactional アノテーションの使用
limsservice の監査メソッドに @Transactional アノテーションを付けないと、監査ログが永続化されません。しかし、persistenceService の永続化メソッドには既にこのアノテーションがあります。なぜこのアノテーションを付ける必要があるのですか。
java - 複数のラップされたオブジェクトの反射
JUnit テストで、Spring DAO の hibernate テンプレートを変更したいと考えています。このDAOは
- @Transactional で注釈が付けられているため、実行時にラップされ、
- Mockitos の spy() メソッドによってスパイされました。そのため、DAO はそのスパイによって 2 回ラップされます。
したがって、DAO には 2 つのラッピング オブジェクトがあります。1 つは @Transactional から、もう 1 つはスパイからです。これらのラッパーのどれが最初に作成されるかがわからないため、リフレクションを介して DAO で休止状態のテンプレートを設定できません。
二重ラップされた DAO でテンプレートを設定するにはどうすればよいですか?
[編集]
いくつかのソース:
テストクラスで:
hibernate - Springネストされた@Transactionalメソッドとロールバック
同じクラスで別の@Transactionalメソッドを呼び出す@Transactionalメソッドを持つ@Serviceクラスがあります。このためのロールバック動作をテストしていましたが、正しく機能していないことがわかりました。コードは次のようになります。
methodOneを実行した後、データベースをチェックすると、ログに「JDBCTransaction--rollback」と表示されていても変更があります。
methodTwoを個別に呼び出し、最後に例外を追加すると、変更は正しくロールバックされます。
ネストされた@Transactional呼び出し中に発生したmethodOneのロールバック変更を適切に行う方法はありますか?REQUIREDのデフォルトの伝播でこれが達成されるという印象を受けましたが、機能していないようです。ありがとう
アップデート
わかりました、私はちょうど何か他のものに気づきました。例外スローの直前に、サービスのdaoを呼び出し、「executeUpdate」を介して手動更新を実行しています。この行にコメントすると、ネストされたロールバックが機能します。したがって、問題は実際にDAOを呼び出してexecuteUpdateクエリを実行しているようです。しかし、これも現在のトランザクション内で実行するべきではありませんか?