問題タブ [spring-orm]
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.
jpa - Spring @Transactional が RoutingDataSources で始まらない
ルーティング データ ソースを使用しており、作成操作には @Transactional アノテーションが付けられています。しかし、トランザクションが開始またはコミットされないことに気付きました。以下は、ルーティング データ ソースの構成です。
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean で使用しているのと同じデータ ソース。
次のように、展開時に別のデータ ソースをルーティング データ ソースに追加しています。Spring トランザクション管理が機能しません。
spring - Dao クラスは、スプリング ブート アプリケーションで挿入または更新を実行しません。
私の現在のスプリング ブート アプリケーションでは、次の休止状態の構成があります。
データベーステーブルを作成し、data.sql
問題なくデータを挿入しますが、ビューを介してエンティティを挿入または更新しようとすると、エラーがトリガーされないにもかかわらず、データが挿入されません。
フォームからの送信は、コントローラーからのこのメソッドによって処理されます。
私のサービスクラスには次のものがあります:
そして私のdaoクラスでは:
誰がここで何が悪いのか見ることができますか?
hibernate - Spring の例外変換メカニズムが作動しない
unique constraint
SpringDataIntegrityViolationException
がスローされることを
期待して、故意に に違反しようとしているシナリオがありますが、決してそうではありません。javax.persistence.PersistenceException
の原因でスローされますorg.hibernate.exception.ConstraintViolationException
が、Spring Translation Takes は発生しません。
DAO
およびService
クラスには、 and および Repository ed で正しく注釈が付け@Repository
られ@Service
ます@PersistenceContext
。
サービス:
私の設定:
例外トレース:
java - Spring ManyToMany 削除オブジェクト
私は現在、春のある時点で立ち往生しています。現在、Patient と Risk という名前の 2 つのテーブルがあり、Riskpatient というテーブルで結合されています。リスク オブジェクトを患者インスタンスから削除しようとすると、オブジェクトがリストから削除されないようです。これはセットアップです:
XML:
私のDAO実装ファイル:
DAO メソッドを呼び出すコントローラー メソッド:
単体テストでこのメソッドを実行し、ロールバックを false に設定すると、削除されますが、コントローラーを使用してそこに移動しても、実際には削除されません。DAOメソッドでリストのサイズを印刷したところ、削除前は4、その後3と表示されていましたが、コントローラーに戻ると、どういうわけか4に戻りました。
これに関するヘルプをいただければ幸いです。
キングよろしく
java - HibernateTemplate findByCriteria と Get の間の休止セッション状態の違い
次の奇妙な動作があります。
開始する前に TestValues を作成するテストケースがいくつかあります。最初にメイン エンティティが作成され、テスト値 ID とともに保存されます。これには、Springs HibernateTemplate の saveOrUpdate を使用します。
次に、いくつかの子オブジェクトが作成され、子コレクション内のこのオブジェクトにアタッチされます。(hbm.xml に cascade="save-update" があります) これらの子オブジェクトには、その時点で ID が割り当てられていません。
次に、追加の saveOrUpdate が呼び出されます。
エンティティの saveOrUpdate ごとに、追加の監査エントリがデータベースに保存されます。このため、DetachedCriteria が作成されるたびに、現在のユーザーをユーザー名で検索し、Audit エントリで参照します。その時点まで、すべてが正常に機能します。すべての子オブジェクトには ID が割り当てられます。
いくつかのプロファイリングの後、この DetachedCriteria には多くの時間がかかることがわかり、ID による HibernateTemplate の get メソッドでユーザーにアクセスできるように変更することにしました。これははるかに効率的です。
しかし、奇妙なことが起こることを知ってください。子を持つエンティティの saveOrUpdate では、子の ID が生成されず、見た目どおり、子はまったく保存されません。
ここで読んだようにhttp://www.journaldev.com/3481/hibernate-save-vs-saveorupdate-vs-persist-vs-merge-vs-update-explanation-with-examples HibernateTemplate saveOrUpdate は永続化するために異なるため、マッピングされたコレクションがフラッシュされるまで保存されないという上記の動作につながるトランザクションの外部で使用できます。だから私が理解していないのは、HibernateTemplate で detachedCriteria で findByCriteria を使用すると、なぜ異なる動作があるのかということです。
findByCriteria を呼び出すと、セッションでフラッシュが呼び出されますか、または、findByCriteria の代わりに get を呼び出すと、休止状態セッションの状態が異なるのはなぜですか。auditentry、ユーザー アカウント、およびテスト値の作成中に保存されるエンティティの間に直接的な参照はありません。
PS: 現在、HibernateTemplate の使用が推奨されていないことは知っています。しかし、それは古いアプリケーションであり、完全に置き換えるには時間がかかりすぎます。
java - TopLinkJpaVendorAdapterのSpring ORM/JPAの後継者または代替品はありますか?
これは、私が本当に簡単に見つけることができるはずの非常に基本的なもののようですが、私はそれに対する答えを見つけることができませんでした!
Spring 3.2.4 のドキュメントでは、Toplink Essentials のベンダー サポートが削除されたことを示しています: http://docs.spring.io/autorepo/docs/spring-framework/3.2.4.RELEASE_to_4.0.0.M3/changes /pkg_org.springframework.orm.jpa.vendor.html
しかし、このクラスを使用する代わりに実際に何ができるかはどこにもわかりません。Springで Toplink を構成するすべての例は、Spring 2.5 前後のもののようです。
Toplink JPA実装のSpringアプリケーションコンテキストを定義するための受け入れられたアプローチを誰か教えてもらえますか?
私は使用しています:
- 春 (4.1.4)
- Toplink エッセンシャル (2.1-60f)
- 組み込み Derby DB (10.11.1.1)
- トムキャット (8.0.18)
私の現在のコードと構成の設定を以下に示します。これは機能します-モック Web アプリケーションに移動すると DB が作成されるという意味では/help
-しかし、エンティティテーブルは自動的に作成されません。これが私が主に行っていることです今すぐ解決策を見つけようとしています。以下で定義されているのは、単純な JDBC データソースであり、余分な距離を移動してすべてのエンティティを自動的に作成できる適切な JPA エンティティ マネージャー ファクトリではないためだと思います。
これをWARに移行してTomcatにデプロイする前に、同じものを使用するスタンドアロンのJavaアプリケーションがpersistence.xml
あり、問題なく動作しました(データベースとエンティティテーブルを自動的に作成します)。Web アプリケーションに移行し、Spring をミックスに入れましたが、それほど多くはありません :-(
基本的に、ファイルで行われているように、Spring アプリケーション コンテキストのどこかを指定create-tables
(または) する必要があることはわかっていますが、クラスのようなものなしでそれを行う方法がわかりません(以下のコメントアウトされた要素を参照)。 .generateDdl=true
persistence.xml
TopLinkJpaVendorAdapter
applicationContext.xml
Spring エンティティ マネージャ ファクトリは、で定義されている永続化ユニット名を参照してpersistence.xml
いるようですが、そこで定義されている残りの部分には注意を払っていないようです。Spring にこれらの他の設定 (つまり、Toplink エンティティ) を取得させる方法はありますか?マネージャー ファクトリ プロバイダー クラス、および JDBC の詳細など) で定義されているものからpersistence.xml
? それとも、Spring が Toplink のベンダー実装を取り下げ、代わりに Eclipselink または Hibernate を使用する場合、Toplink の道を進む価値さえありますか? (余談ですが、そもそもこの実装クラスが削除された理由を知っている人はいますか?)
META-INF/persistence.xml:
WEB-INF/spring/applicationContext.xml:
WEB-INF/web.xml:
META-INF/context.xml:
org.xyz.web.HelpController:
hibernate - Blueprint [Karaf] - Spring Orm - Hibernate - LocalSessionFactoryBean - Entity Vo オブジェクト クラスが見つかりません
Fuse Fabric 6.1.0-redhat-379 を使用しています。Spring ベースのアプリケーションを blueprint osgi アプリケーションに移行します。以前は、db にアクセスするために hibernate で spring orm を使用していました。spring orm (service mix bundles) を blueprint container に移植してみました。現在、マッピング リソース ファイル内に存在するエンティティ オブジェクトが hibernate-core バンドルに見つからないというエラーに直面しています。しかし、私のアプリケーションバンドルにも同じものがあります。