問題タブ [spring-data-jpa]
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 - @TableGenerator が使用されている場合、Hibernate は同じエンティティ/テーブルを 2 回作成しようとします - どうすれば回避できますか?
JBoss 6.0 にデプロイされた J2EE アプリケーションで休止状態を使用しています。私のデータベースは Oracle 11i と Derby です。主キー (シリアル ID を実行) を生成するために、エンティティ (PersonDTO) の 1 つで @TableGenerator アノテーションを使用します。
そして、シーケンスに必要なエンティティを定義しました-次のように:
シーケンス生成に関する限り、すべてが正常に機能します。しかし、エンティティの作成中 (J2EE アプリを初めてデプロイするとき)、JBoss server.log ファイルに次のエラーが表示されますが、すべてのエンティティ/テーブルは最終的に正常に作成されます。
これは実際には「エラー」ではないと思います。2 つのエンティティ Bean の一部として参照しているためEDIS_SEQUENCE
、休止状態が 2 回作成しようとしています。1 つ目は EdmSequenceDTO がデプロイされたとき、2 つ目は PersonDTO がアノテーションEDIS_SEQUENCE
の一部として参照するときです。@TableGenerator
私のpersistence.xml
ファイルにはhibernate.hbm2ddl.auto
、value="update" のプロパティがあります。「create-drop」の代わりにこの値が必要です。
休止状態によって報告されたエラーを回避する方法はありますか?
java - XMLを使用しないSpringDataJPAのブートストラップ
Java@Configuration
に相当するものは次のとおりです。
Spring Data JPAで?@Configuration
クラスを優先してXML構成を削除しようとしていますが、 JpaRepositoryConfigDefinitionParserソースを読み取ることは無駄です。
私が得ることができる最も近いものは次のとおりです。
ただし、<repositories/>
タグの方がはるかに機能的です。CLASSPATHで見つかった拡張すべてのインターフェイスに対してDAOが自動的に作成されます。CrudRepository
また、私のソリューションは、デフォルトのSpring Data JPAの動作とは対照的に、DAOにトランザクションを適用しないようです。
java - Spring Data JPAリポジトリでsave()の後に返されたインスタンスを使用するのはなぜですか?
コードは次のとおりです。
Spring Data JPA プロジェクトのJpaRepository 。
テストコードは次のとおりです。
結果は次のとおりです。
これは CrudReporitory.save() javadoc からのものです。
特定のエンティティを保存します。保存操作によってエンティティ インスタンスが完全に変更された可能性があるため、返されたインスタンスを以降の操作に使用します。
Spring Data JPA の SimpleJpaRepository の実際のコードは次のとおりです。
では、なぜ元のインスタンスではなく、返されたインスタンスを使用する必要があるのでしょうか。(はい、そうしなければなりません。それ以外の場合は、切り離されたインスタンスで作業を続けますが、その理由は)
元の EntityManager.persist() メソッドは void を返すため、インスタンスは永続化コンテキストにアタッチされます。リポジトリに保存するためにアカウントを渡すときに、いくつかのプロキシ マジックが発生しますか? Spring Data JPA プロジェクトのアーキテクチャ制限ですか?
mysql - すべてのエンティティでのソフト削除に Hibernate @SQLDelete を使用する
かなり複雑なデータ モデルがあり、MySQL の上で Hibernate と Spring Data JPA を使用しています。定型コードを最小限に抑えるために、すべてのドメイン オブジェクトを拡張する基本クラスがあります。このクラスのみを使用して、すべてのドメイン オブジェクトに論理的な削除機能を追加できるようにしたいと考えています。ただし、@SQLDelete
句にテーブル名が必要です。
SQLDelete ステートメントを一般化し、拡張ドメイン オブジェクトが独自のテーブル名を入力できるようにする方法を知っている人はいますか?
java - spring data jpaでJpaRepositoryインターフェースを実装するリポジトリは、ソートセットを返すことができますか?
Spring Data JPA 1.0.1 を使用しています。JPA リポジトリが定義されています。組み込みデータベースの実装を使用して統合テストを作成しています。サービス クラスがリポジトリを呼び出すと、次の例外が発生します。
これが私のリポジトリの実装です
java - TransactionRequiredException: Spring Data JPA で進行中のトランザクションはありません
私は同様の問題を探しまし たが、これに対する解決策を見つけることができませんでした:
私はSpring Data JPAアプリケーションを持っており、トランザクションを実行しようとするたびにjavax.persistence.TransactionRequiredException: no transaction is in progress
.
Transaction Manager または Entity Manager Factory と関係があると思いますが、はっきりとはわかりません。
コンテキスト ファイルはここにあります(最新のチェックインはここにあります) が、重要な部分は次のとおりです。
サンプルのリポジトリがここにあり、リポジトリ ファクトリをここに作成しましたが、これが必要かどうかはわかりません...次に、ここで使用します(34 行目)。
上記のいくつかの点が間違っていますが、修正しようとしましたが、できません。
- Begin および Commit トランザクションは明示的です。
bankRepository
である必要がありますが@Autowired
、それを行うと が得られnull
ます。ただし、このテストケースでは Autowired で動作します。
誰かが同様の問題に直面し、何が起こっているのか知っていますか? これを読んでくれてありがとう。この質問に対する答えが他の人々に役立つことを願っています。
spring - GenericDao の開発に最適な Spring API
spring jpa( jpatemplate,japdaosupport spring-data-jpa ,native way entitymanager,HibernateSupport,ect ) に関する多くの実装テクニックを目にしますが、これはジェネリック DAO を開発するための最良のテクニックであり、クリーンなリソース割り当て、トランザクション管理、および高いものでなければなりませんパフォーマンス 。長所と短所は何ですか
シナリオ
- 実体 >70
- Web アプリと Web サービス
- 将来の osgi サポートと複数のデータ ソース
spring - Spring Container の外で Spring Data JPA をどのように使用しますか?
Spring Bean コンテナーを使用せずに、DAO プロキシー (別名リポジトリー) を生成できるように、Spring Data JPA オブジェクトを手動で接続しようとしています。
必然的に、なぜこれをやりたいのかと聞かれます: 私たちのプロジェクトは既に Google Guice を使用しており (そして GWT で Gin を使用している UI で)、別の IoC コンテナー構成を維持したくない、またはプルインしたくないためです。結果として生じるすべての依存関係。Guice の を使用できる可能性があることはわかってSpringIntegration
いますが、これは最後の手段です。
オブジェクトを手動で接続するためにすべてが利用できるようですが、十分に文書化されていないため、苦労しています。
Spring Data ユーザー ガイドによると、リポジトリ ファクトリをスタンドアロンで使用することが可能です。残念ながら、この例はRepositoryFactorySupport
どちらが抽象クラスであるかを示しています。いくつかの検索の後、私は見つけることができましたJpaRepositoryFactory
JpaRepositoryFactory
トランザクションを自動的に作成しないことを除けば、実際にはかなりうまく機能します。トランザクションは手動で管理する必要があります。そうしないと、データベースに何も永続化されません。
@Transactional
問題は、注釈が自動的に使用されないことであることが判明しました。TransactionInterceptor
ありがたいことに、JpaRepositoryFactory
はコールバックを取得して、返される前に、生成されたリポジトリ プロキシにさらに AOP アドバイスを追加できます。
これは物事がうまくいっていないところです。コードでデバッガーをステップ実行すると、TransactionInterceptor
確かにトランザクションが作成されますが、間違っていEntityManager
ます。Spring はEntityManager
、現在実行中のスレッドを見てアクティブを管理します。はTransactionInterceptor
これを行い、スレッドへのアクティブなEntityManager
バインドがないことを確認し、新しいスレッドを作成することを決定します。
ただし、この newは、作成されてコンストラクターにEntityManager
渡されたものと同じインスタンスではなく、. 問題は、どうすれば と を同じように使用できるかということです。JpaRepositoryFactory
EntityManager
TransactionInterceptor
JpaRepositoryFactory
EntityManager
アップデート:
これを書きながら、問題を解決する方法を見つけましたが、それでも理想的な解決策ではないかもしれません. この解決策は別の回答として投稿します。私が解決した方法よりも、Spring Data JPA をスタンドアロンで使用するためのより良い方法についての提案をお待ちしております。
jersey - Spring Data により、Spring は JAXRS の @Provider を見つけることができなくなりますか?
Spring + Jersey を使用して API サービスを構築しています。最近、Spring Data をサーバーに取り込もうとしています。実行中のコードでリポジトリを実際に使用していないため、 app.xml に1行追加するだけです:
しかし !API が機能していないことに気付きました。
xml の「jpa:repositories ...」行を削除すると、すべて正常に動作します。そして、すべてのプロバイダー クラスは spring によって登録されます。
しかし、XML に「jpa:repositories...」行を追加すると、「ルート リソース クラス」のみが登録されます。
すべての JAXRS の @Provider (s) がありません!
Spring-Data のバグかどうかはわかりません。そして、それを解決する方法は?
環境 :
サーバー:resin-4.0.25
関連する依存関係:
( jersey-json を追加しようとしましたが、まだ機能していません)
java - Spring-Data-JPA アノテーションの setMaxResults?
Spring-Data-JPA を自分のプロジェクトに取り込もうとしています。私を混乱させることの 1 つは、注釈によって setMaxResults(n) を達成する方法です。
たとえば、私のコード:
user を otherObjから返す必要があるだけですがone (and only one)
、maxResults に注釈を付ける方法が見つかりません。誰かが私にヒントを与えることができますか?
(mysqlは不平を言います:
)
リンクを見つけました: https://jira.springsource.org/browse/DATAJPA-147、試してみましたが失敗しました。今は無理っぽい?このような重要な機能が Spring-Data に組み込まれていないのはなぜですか?
この機能を手動で実装する場合:
に大量の事前定義されたメソッドを実装CrudRepository
する必要があります。これはひどいことです。
環境: spring-3.1 、 spring-data-jpa-1.0.3.RELEASE.jar 、 spring-data-commons-core-1.1.0.RELEASE.jar