問題タブ [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.
java - Spring @Transactional メソッド内でトランザクションが開始されない
Spring (3.0.5)、Hibernate (3.6.0)、および Wicket (1.4.14) を使用してアプリケーションを開発しているときに、奇妙な問題に遭遇しました。問題は、オブジェクトをデータベースに保存または変更できないことです。「できない」とは、オブジェクトのすべての変更または EntityManager.persist(foo) への呼び出しが、黙って無視されることを意味します。仕事を選択します。
サンプルケースは単純です - 一部のウィケットページで、次のようにオブジェクトをデータベースに保存しようとします
コミダオはこちら
ロギングをオンにしました。これがログの関連部分です (Hibernate と Spring の両方が TRACE に設定されています)。ここで重要だと思う行に ** を追加しました。
もちろん、オブジェクトはデータベースに保存されません。
最後のファイル - 私の applicationCONtext.xml
何が問題なのか、それを解決する方法がわかりません。コードでトランザクションを管理したくありません - これが Spring の目的です。
java - Hibernate、Spring、@Transactional-try / catchで囲みますか?
Spring3とHibernate3.6を使用したWebアプリケーションの開発に取り組んでいます。@Transactional
アノテーションとコードの構造についていくつか質問があります。
-> @Transactional
(Springを使用したトランザクション管理)を使用する場合、@Transactional
-annotatedメソッドを呼び出すときにtry / catchで囲む必要がありますか?
たとえば、オブジェクトをロード、変更、および返すメソッドを取得し、それを別のクラスから呼び出す場合、呼び出しをtry / catchで囲む必要がありますか?何かがうまくいかない、オブジェクトが返されない、データベース接続が失敗するなどの可能性があります。わかりません。
これまでは、@Transactional
発生する可能性のあるすべての例外を処理し、エラーが発生したときにこのトランザクションのすべての操作をロールバックすると考えていました。しかし、それが発生した場合は、なんとかしてユーザーに通知する必要があります。try-blockでtransactional-methodを呼び出してロールバックすると、catchブロックがアクティブになりますか?そうすれば、ユーザーに「何かがうまくいかなかった」と言うことができます。そうしないと、ユーザーに通知されない可能性がありますか?
または、返されたオブジェクトがあるかどうかを確認するだけで十分ですか(if / else)、try / catchは必要ありませんか?私は新しいです、そして私は他が彼らのコードをどのように構造化するか聞きたいです。ありがとうございました :-)
spring - Spring3 の @Transactional @Scheduled は DB にコミットされていませんか?
Spring3 の @Scheduled を試すのはこれが初めてですが、DB にコミットできないことがわかりました。これは私のコードです:
私はそれが動作するはずだと思います.1時間ごとに起動し、DBからxxxをロードするのを見ることができますが、データはDBにコミットされていません.
tx:annotation-driven
春の xml にありました:
誰かが私がここで見逃したことを教えてもらえますか?
私は1つの「汚い」解決策を持っています:
ここでは問題なく動作しますが、非常に冗長であるため、コードが読みにくくなっています。前のコード スニペットでTransactionManager が挿入されていない(そして開かれていない) のはなぜでしょうか?
どうもありがとう !
jpa - Spring Rooエンティティの「すべて削除」を実装するには?
Spring Roo エンティティーのすべてのデータベース・エントリーを削除しようとしています。私が見ると*_Roo_Entity.aj
、「すべて削除」メソッドがないように見えます。私はそれを自分で実装しようとしました (Licences
は Roo エンティティの名前です。命名は気にしないでください。データベースからリバース エンジニアリングされたもので、後で変更される可能性があります):
問題なくコンパイルされますが、呼び出すLicences.deleteAll()
と次の例外が発生します。
追加@Transactional
しても変わりません。
ここで何が欠けていますか?
このアプローチは完全に間違っていますか?次のように実装する必要があります:
これは機能しますが、JPA はこれをクエリに変換するほどスマートですか、それともクエリdelete from licences
を作成しますn
か?
email - x-msgのプレフィックスが付いたMagentoトランザクションEメールリンク
目的 URLの最後に変数を付けてWebサイトに戻るリンクを含むMagentoトランザクションメールを送信します。
プロセス リンクと呼ばれるMagentoのトランザクションメールに変数を渡し、メールテンプレートで次のコードを使用して表示します。
問題 リンクがpタグに正しく表示されている例:
ただし、マウスをタグの上に移動すると、次のリンクが表示され、電子メール内のリンクが機能しなくなります。
x-msg://12/「http://www.mysite.com/?param=1」</p>
ノート
- Mac MailとHotmailでこれを試しましたが、同じ結果が得られました。
- メールに渡すURLは動的である必要があり、ハードコーディングすることはできません。
よろしくお願いします。
hibernate - Hibernateでアトミック操作を実行するには?
こんにちは
、フィールドとして別のエンティティのセットを持つ休止状態のエンティティがあります。このようなもの:
少なくとも 1 人の ADMIN ユーザーが常にシステムに存在するようにテーブルを保持する必要があります。これは簡単な方法で行うことができ、以下のようになります。
しかし、実際の問題は、同時操作がある場合に発生します。すべての操作をアトミックに実行するにはどうすればよいですか?
ありがとう、
HM
php - クライアント/サーバーアプローチでの永続的なトランザクション
私のアプリケーション(クライアントサーバー)では、(データベースから)いくつかの行を編集する必要があり、それらが編集されている限り、誰も編集できる必要はありません。もちろん、これはトランザクションによって行われます。問題は、クライアント側の環境ではトランザクションがサーバー側で管理されるため、行を編集するクライアントがトランザクションに直接アクセスできないことです。(私はその状況でPHPを使用していますが、他のテクノロジーでも同じアプローチが採用されていると思います)。したがって、クライアントが編集を完了するまで、トランザクションを開いたままにする必要があります(編集のために行をロックしたままにするため)。PHPでは、前述のクライアントと同じホストにある他のクライアントから接続が切断される可能性があるため、持続的接続は役に立ちません。私のシナリオに何かアイデアはありますか?
ありがとうございました。
java - Hibernateは完全に新しいエンティティを自動的に保存しています(呼び出しのフルスタック)
私はすでにこの質問を2回行っていますが、stackoverflowを初めて使用するため、ここでサンプルコードをフォーマットするためのルールがわからないようです。今、私は呼び出しの完全なスタックを提供することにしました。すべてが非常に奇妙で、それを説明する言葉が見つからないため、状況を説明できることを願っています。まず、問題に関係するクラスのソースを紹介します。私の実際の質問はページの最後にあります。大きなコードは念のためです。問題の説明が何であるかわからないためです。これが私のフレックスアプリケーションからの呼び出しを受け取るサービスファサードです。
私の質問にとって重要なメソッドは、findDuplicateEmailsメソッドです。
profileServiceは、次のクラスに実装されています。
ここでも重要なメソッドはfindDuplicateEmailsです
profileManagerの実装は次のクラスです。
ここでも重要なメソッドは、findDuplicateEmailsメソッドです。
さて、この短い背景の後、ここに私の問題があります:
SpringのHibernateTemplateでHibernateを使用しています。findDuplicateEmailsメソッドで、flexアプリケーションから来るいくつかの完全に新しいエンティティが自動的に保存されることがわかりました。これは非常に奇妙で、デバギング中に、ProfileManagerでメソッドfindDuplicateEmailsを変更しても、次のようになっていることがわかりました。
エンティティの電子メールは自動的に保存されます。また、エンティティの識別子が「email」ではなく、「newEmail」や「email1」などの場合は問題なく、作成した場合にのみエンティティが存続することもわかりました。持続的。この問題はこのクラスにのみ存在し、最後に、この問題は電子メールにのみ発生します。つまりPhone phone = new Phone();
、エンティティ電話がある場合は、必要な場合にのみ電話が持続します。
flexアプリケーションは、最初にユーザーの電子メールから入力されたものが一意であることを確認し、次にユーザーとの対話の後にupdateProfile()
、入力されたデータが有効かどうかをメソッドに呼び出します。
java - @Transactional アノテーションなしで別のメソッドを呼び出す @Transactional メソッド?
としてマークされた Service クラスのメソッドを見てきましたが@Transactional
、同じクラスで としてマークされていない他のメソッドも呼び出していました@Transactional
。
別のメソッドへの呼び出しにより、アプリケーションが DB への別の接続を開くか、親トランザクションを一時停止するなどの原因になっているということですか?
注釈付きの別のメソッドによって呼び出される、注釈のないメソッドのデフォルトの動作は何@Transactional
ですか?
spring - Spring 、 Transactions 、 Hibernate フィルター
Spring で宣言型トランザクションを使用しています。「トランザクション」で注釈が付けられたサービスレイヤーがあります。このサービス層は DAO を呼び出します。すべての dao メソッドで休止状態フィルターを有効にする必要があります。毎回明示的に session.enablefilter を呼び出す必要はありません。では、休止状態のセッションが作成されたときにインターセプターを呼び出すことができるように、春のトランザクション aop などを使用する方法はありますか?
私のサービス層:
}
私の道レイヤー
あなたの助けに感謝!!