問題タブ [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.
java - Springで使用する場合はHibernatesessionFactory.getCurrentSession()
SpringアプリケーションコンテキストにHibernateを接続しようとしています。SessionFactoryの接続に成功しましたが、getCurrentSessionを呼び出そうとすると、次のエラーが表示されます。
データソースセッションファクトリとトランザクションマネージャーを構成しています。また、トランザクション処理がアノテーション駆動型になることを指定しました
これが私のコンテキストxmlです:
これが私がエラーを見ているクラスです:
これが呼び出されると、sessionFactoryはnullではありませんが、上記のエラーでエラーが発生します。openSessionを使用すると、すべてが正常に機能しますが、これはトランザクションでは機能しないことを理解しています。
何か案は?ありがとう
spring - Spring Auditing で変更されたフィールドを取得する
春の監査を使用して、エンティティの変更されたフィールドとその古い値、新しい値のリストを取得できますか?
エンティティの更新されたフィールドのリストと、ログの古い値と新しい値を取得しようとしていました。getDeclaredFields を使用して、更新前に古いエンティティと新しいエンティティを比較しましたが、機能しました。しかし、いくつかの標準的で簡単な解決策があるかどうかはまだ疑問に思っていました. エンティティを管理するために春と休止状態を使用しています。調査の結果、更新イベントにリスナーを追加し、イベントから getDirtyProperties を使用することで、目的に応じて休止状態セッションを使用できることがわかりました。しかし、私が理解しているように、休止状態のトランザクションマネージャーが必要であり、すでに JpaTransactionManager を使用しており、変更できません。
それから私はこの春の監査機能 http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/#jpa.auditingについて言われ 、質問は getDirtyProperties のようなものを提供できるかどうかです? それとも別の解決方法があるのでしょうか? 新しいテーブルを作成することは望ましくないため、正しく行うと、春の監査ではデータベースに監査データを格納する必要があります。
spring - Spring 管理の SessionCustomizer を EclipseLink Config に取得するにはどうすればよいですか
春のプロジェクトでeclipselinkを使用しています。私の構成の 1 つの必要な部分は、id-generator (Twitter による Snowflake) を構成する SessionCustomizer です。
このカスタマイザーの作成をSpringで処理して、依存性注入を使用し、プロパティプレースホルダーを使用できるようにすることはできますか?
カスタマイザーで見つけた唯一の例は、常に永続化xmlでクラスを構成します。
これまでの私の設定は次のとおりです。
java - JPA/Hibernate を使用して大きなオブジェクト グラフを永続化する際の例外
古い Web アプリケーションを置き換えるために、JPA に基づく新しい Web アプリケーションを作成しています。移行の一環として、古いアプリケーションのデータベースを新しい、より洗練された JPA 管理のデータベースに変換しています。
そこで、古いデータベースを一連の JPA エンティティに変換し、その後それらを保存する「スクリプト」を作成しました。それはこのように動作します:
- ドメイン モデルの依存関係に基づいて変換順序を作成する
- エンティティごとに
- レガシー DB に対してデータベース クエリを実行する
- 取得した各テーブル行の新しいオブジェクトをメモリ内のリストに格納します
- 変換と同じ順序で生成されたリストを反復処理し、各エンティティを永続化します。
これで、最初の 2 つのステップがうまく機能します。ただし、永続化すると例外が発生します。例外は、あるエンティティが別のエンティティと関係を持っている場合に発生します。たとえば、エンティティの 1 つが でBook
、別のエンティティが との関係をChapter
定義しているとします。章を永続化すると、例外がスローされます。@ManyToOne(optional=false)
Book
java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation: models.Chapter.book -> models.Book
もちろん、これは本の状態に何か問題があることを示しています。設定されていないか、まだ永続化されていないようです。ただし、Book
の変換で が適切に設定されていることを確認できます。また、タイプのエンティティが永続化される前に、Chapter
タイプのすべてのエンティティが によって永続化されていることも確認できます。明らかに、私の JPA プロバイダーは期待どおりに動作せず、なんらかの理由でオブジェクトを完全に保持しません。Book
EntityManager
Chapter
Book
データベースに変換したオブジェクトのグラフ全体を保存するには、どのようなソリューションが必要ですか? JPA プロバイダーとして Hibernate を使用し、Spring 3.1 を使用して依存関係とEntityManager
s を注入します。
編集 1: いくつかの追加情報:チャプターで entityManager.persist() が呼び出される前に、各ブック オブジェクトで entityManager.persist() が呼び出されることを再度確認しました。ただし、book オブジェクトの id は null のままであり、適切に永続化されていません。トランザクションを使用していないにもかかわらず、データベースも空のままです。
編集 2: 上記のテキストからは明らかではないと思うため: 本と章のストーリーは単なる例です。別のエンティティを参照するすべてのエンティティで発生します。これにより、エンティティの値を適切に設定していないのではなく、JPA/Hibernate を適切に使用していないように見えます。
EDIT 3: 核となる問題は、 Book を適切に保持し、すべての適切な注釈を持っているにもかかわらず、book.getId() が null のままであることです。基本的に、Hibernate はエンティティを永続化した後にエンティティに ID を設定しないため、後でそれらのエンティティを使用する必要があるときに問題が発生します。
spring - java.lang.ClassNotFoundException: org.springframework.orm.hibernate4.LocalSessionFactoryBean
私はSpringが初めてです。これは私の最初の例です(JSF 2、PrimeFaces 3、SpringとHibernateの統合)ここにpom.xml があります:
プロジェクトを実行すると、次のエラーが発生します。
spring - JPA2.0vs. javax.persistence.sharedCache.mode
Spring 3.2.0、Eclipselink 2.5.0-M9 を使用
persistence.xml に以下が含まれている場合:
次に、実行時に emf.getProperties() を介して EntityManagerFactory を調べると、このプロパティは設定されません。
ただし、代わりに Spring entityManagerFactory 構成に入れると:
次に、emf.getProperties() からプロパティを取得できます。
また、Spring 構成を使用する場合、共有キャッシュが実際には有効になっていないようです。これにより、スプリングコンテナに正しく設定していないと思います。
アイデア?
java - Hibernateオブジェクトがマップされていない例外
データベースからすべてのグループを取得するためのHQLステートメントに問題があります。次の例外が発生します。
関連するコードは次のとおりです。
spring-hibernate.xml:
グループ:パッケージcom.youthministry.domain;
念のため、このプロジェクトのgitリポジトリは次のとおりです。http: //github.com/dmcquillan314/YouthMinistryHibernate
このエラーに関するその他の情報が必要な場合はお知らせください。投稿を編集します。
どんなアイデアでも大歓迎です。前もって感謝します。
java - 重複エントリ例外の休止状態
データベースにエントリを保存する際に問題が発生しています。次の階層を使用しています。
親クラス PageContent と 2 つのサブクラス TextEntry および Image がありますが、PageContent エンティティ以外を格納しようとすると、次の例外が発生します。
HTTP ステータス 500 - リクエストの処理に失敗しました。ネストされた例外は org.springframework.dao.DataIntegrityViolationException: Duplicate entry '2' for key 'groups_groupId'; です。SQL [該当なし]; 制約 [null]; ネストされた例外は org.hibernate.exception.ConstraintViolationException: キー 'groups_groupId' の重複エントリ '2' です
関連するクラスはこちら
Group.java:
PageContent.java
Image.java
TextEntry.java
私はこれを解決しようとしましたが、それは私が使用している CascadeType に関係しているということであり、代わりに削除時に Cascade に変更すると、グループエンティティの重複挿入が削除されたと考えていましたが、それでも受け取ります前述の例外。
git リポジトリへのリンクは次のとおりです: http://github.com/dmcquillan314/YouthMinistryHibernate
事前に感謝します。
関連するすべての db テーブルのテーブル作成スクリプトは次のとおりです。
spring - 春は休止状態と組み合わせる
問題に遭遇しました。Spring なしで休止状態を使用する場合、常に hibernate.cfg.xml に次の構成を記述します。
これはシードをスレッドにバインドします。しかし、Springと一緒にhibernateを使用する場合、同じ構成を実装する方法がわからず、applicationContext.xmlにも記述しますが、機能しません。例外をスローします:
org.hibernate.HibernateException: スレッドにバインドされた Hibernate セッションがありません。構成では、ここで非トランザクション セッションを作成することはできません
実際には、セッションをスレッドにバインドしたいだけで、sessionfactory の getcurrentSession メソッドを使用できます。