問題タブ [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.
hibernate - Spring、Hibernate@OneToOneトランザクションテストの問題
DAOObjectのテスト中に問題が発生しました。@oneToOneリレーションによってリンクされている2つのエンティティがあります。クラスは次のとおりです。
と
DAOで私は次のことをします:
ご覧のとおり、session.flush()もHibernate.Initalizeも機能しません。エンドユーザーはデバイスに関連付けられていません。@Transactionalを削除すると、...すべてが正常に機能します。これを機能させる方法はありますか?そうしないと、テスト後にデータベースに作成されたエンティティを手動で削除する必要があります。これはかなり面倒です。
答えを期待しています。
前もって感謝します。
c# - TxNTFS を使用したときの奇妙な断続的なエラー
ファイルシステム上のファイルの読み取りと書き込みにトランザクション NTFS を使用していますが、アプリの再起動によってのみ解決される断続的な障害がアプリケーションで発生することに気付きました。エラーのスタック トレースは次のとおりです。
IKernelTransaction は、ハンドルを取得する COM インターフェイスです。
ここ
私のコードはhttp://msdn.microsoft.com/en-us/library/cc303707.aspxに非常に似ています
問題は、この COM エラー 0xD0190052 に関する情報が見つからないことです。このエラー コードが何であるかを知るだけでも、非常に役立ちます。
ありがとう
java - 春の複数の@transactionalデータソース
異なるメソッドに2つの異なるdataSources/transactionManagersを使用する必要があります。@Transaction(value = "txManagerABC")と、トランザクションマネージャーのapplicationContextで定義された修飾子を使用した概念は完璧です。( Springの複数の@Transactionalデータソースに見られるように)
残念ながら、Spring2.5でも同じことをする必要があります。誰かがこれを解決する方法を知っていますか?
spring - Spring@Transactional同じトランザクションに異なるメソッドをアタッチする方法
トランザクション構成のサブクラス化に問題があります。
私はこのメソッドを持つクラスAを持っています:
次に、クラスBサブクラスクラスAであり、activateメソッドをオーバーライドします。
スーパーメソッドを単独で実行する場合は独自のトランザクションが必要ですが、クラスBのメソッドを実行する場合は、すべての操作が同じトランザクションに参加する必要があります。
何か案が?
sql - 互換性のないデータ型を持つテーブルでのトランザクションレプリケーション
私は2008年にトランザクションレプリケーションを実装しようとしています。パブリッシャーとサブスクライバーの両方が2008バージョンです。これまでのところ良好です。
パブリッシャーデータベースは2005互換モードです。2008年に新しくなったデータ型「date」の2つの列を持つテーブルがあります。したがって、レプリケーションの場合、最初のスナップショットを取得するときにbcpファイルが生成されると、パブリッシャーは2005モードであるため、次のように考えてスナップショットを生成します。 2005モードのデータベースにも同じように適用されるため、「日付」データ型が2005でサポートされていないため、スナップショットは失敗します。
互換性レベルを変更する以外のいくつかの救済策を提案してください。スナップショットエージェントに、真の2008サスクライバーのスナップショットを生成するように指示するために選択できるオプションはありますか。
前もって感謝します!
チャンダンジャ
java - Spring / Hibernate / appfuse でのトランザクション
ここでの質問のフォローアップとして: Spring 2.0 Annotations and ant
アノテーション (@Transactional) を機能させることができ、トランザクションを手動でコーディングすることも試みました。
どちらの場合も、いくつかの問題が発生しています。これは、新しい Hibernate プロジェクトに手動でアップグレードした appfuse 1.9.4 プロジェクトです。これはSpring 2.0を使用しています。
私がやりたいのは、Web サービス全体をデータベース「トランザクション」にラップして、「呼び出し」全体がアトミックになるようにすることです。これを行う「最も簡単な」方法は @Transactional を使用することだと理解していますか?
そのために、クラスに以下を追加しました。
次に、メソッド (パブリック) の次に、次のことを行いました。
applicationContext-hibernate.xml に、以下を追加しました。
さて、Tomcat を起動すると、次の素敵なエラーが表示されます。
Spring 2.0 を使用していますが、AOP を「構成」していません。
何か案は?
別の方法として、Transaction.commit() を使用してこれを行うこともできますが、そのルートに進むと、トランザクションが開始されないというメッセージがスローされます。
ありがとう!
spring - SpringTransactionManagerとMavenを使用したAspectJロードタイムウィービング
Springのトランザクションマネージャーを使用してロードタイムウィービングを有効にしようとしていますが、あまり運がありません。現在、@ Transactionalメソッドで単純なem.persist()を実行しようとしていますが、次のようにトランザクションを実行しているようには見えません。TransactionSynchronizationManager.isActualTransactionActive()
私のアプリケーションコンテキストファイルには以下が含まれています:
そして私のpom.xmlには以下が含まれています:
セットアップに問題があるように見えます。AspectJ/ロードタイムウィービングを実装する方法のかなりの例に出くわしましたが、それらはすべてEclipseプラグインを使用しているようです。1)私はいかなる種類の使用も避けようとしています。プラグインの2)私はIntellijを使用しています。どんな助けでも大歓迎です。
ありがとう。
spring - Datanucleus: @Transactional から非トランザクションへの移行
私は@Transactional
Aspect-J を織り込んだ Datanucleus、JDO、および Spring の宣言型管理を使用しています。
しかし、「通常の」メソッドがメソッドから永続オブジェクトを取得する@Transactional
と、オブジェクトの状態は一時的になり (永続マネージャーが削除されたように見えます)、オブジェクトは永続的ではなくなります。
例:
@Transactional
これはなぜですか? また、トランザクションが不要な場所に追加せずに修正するにはどうすればよいですか? 以下は (明らかに) 機能するため、トランザクション接続と非トランザクション接続を確立できることを示しています。
- @Transactional メソッドは @Transactional メソッドを呼び出します
- @Transactional メソッドは通常のメソッドを呼び出します
- 通常のメソッドが通常のメソッドを呼び出す
を呼び出すとdao.refresh(l)
、「ID "" のオブジェクトは別のオブジェクト マネージャーによって管理されています」というメッセージが表示されるので、Spring が DAO とは別の永続マネージャーで動作している可能性がありますが、これが原因ですか?
これが私の春の構成です(関連する可能性があります):
java - 保存したくない場合でも、POJO DTO の JPA 同期/コミット エラー
このシナリオを捉えるキーワードが不足しているため、説明を続けさせてください。クラスは単純化されています。
これを考えると:
次の場合、discountService.hasDiscount で例外がスローされます。
- その後の繰り返しで
- 前回の反復では、ItemDto が割引されました。
例外は次のとおりです。
そして、スタックトレースのどこかにこれが表示されます:
問題は、メソッド呼び出しが @Transactional であるその下にある dao メソッドを使用することです (そして、それは単なるクエリであり、複雑なクエリであっても、おそらく正当な理由があります)。JPA Tx マネージャーは、メソッド呼び出しの終了時にジョブを実行するときに、pojo が変更されていることを確認し、同期を試みます。ItemDtoService.getItemDtos 内で getEntityManager().createNativeQuery(nativeSql, ItemDto.class) を使用するため、ItemDto pojo には @Entity があります。他の 5 つのクラスの詳細は次のとおりです。
私は何を間違っていますか?
私が試して動作したオプションのいくつかは次のとおりです。
- @Transactional に Dao メソッドの (readonly=true) を追加するのは、それらが単なるクエリであるためです (ただし、複雑なクエリのために意図的にトランザクション化されている可能性があり、ダーティ リードを防ぐためにロックが必要な場合があるという悪影響があります)。
- コントローラーで、変更用の別のループを作成します。次に、アイテムをループしてどれが割引されているかを確認するための 2 つのループがあり、それらの情報をどこかに保存して、後で前述の pojo の変更を行う 2 番目のループで参照できるようにします。
他のオプションを検討しています。コーディング方法に問題がある場合はコメントしてください。
java - Spring @Transaction がトランザクションを開始しない
Spring 3 を Hibernate 3 で使用しています。Spring 宣言型トランザクションを構成しようとしていますが、何を試しても Spring トランザクションが開始されません。
これが私の構成です
ファイル: applicationContext-hibernate.xml
ServiceLocator インターフェイスを実装するクラス ServiceLocatorImpl があります
私の設定はすべて正しいようです。しかし、executeService メソッドが呼び出されると、TransactionSynchronizationManager.isActualTransactionActive() は常に false を返します。
この問題を解決するのを手伝ってください。さらに情報が必要な場合はお知らせください。
更新: 次のように、ServiceLocator を他のクラスの 1 つに配線しました。
Spring 3.0.0 バージョンを使用しています。
executeService() は、ServiceLocator インターフェイスで定義されたメソッドの 1 つです。エラーを記録するだけでなく、例外をスローするようにコードを更新しました。以下はスタック トレースです。このトレースではプロキシの作成は見られません。助けてください。
更新 [解決済み]
問題を修正しました。どのように修正されたかを回答する前に、さらに情報を提供する必要があります。プロジェクトでSpring MVCを使用しています。コントロール DispatchServlet は、web.xml で構成されます。このフロント コントローラーには、構成 xml ファイル abc-servlet.xml (abc は web.xml 内のサーブレット名) があります。context-param
のように定義されている他のスプリング構成ファイルもありますweb.xml
。ファイルの1つはapplicationContext-hibernate.xml
ファイルです。
ファイルでtxManager
とを定義し<tx:annotation-driven />
ました。applicationContext-hibernate.xml
今日、@Autowired と @Transactional が連携するかどうか疑問に思っていたので、情報を Google で調べたところ、このスレッドが見つかりました。
スレッドは同様の問題について話し、これは問題を解決します。
I implemented one of the suggestion and added <tx:annotation-driven .../> to my servlet's application context xml and it fixes the problem.
<tx:annotation-driven />
私もabc-servlet.xml ファイルに移動したと思って、うまくいきました。
ログに必要なメッセージが表示されるようになりました。
[venice] DEBUG [http-8080-1] 27 Sep 2011 14:24:06,312 ServiceLocatorImpl.logTransactionStatus(100) | ServiceLocator:executeService - Active transaction found
助けてくれてありがとう。この情報が誰かの役に立つかもしれません。なぜそれが以前に機能しなかったのかについて、説明を聞きたいと思います。