問題タブ [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.
hibernate - プロキシ オブジェクトの Hibernate no session エラー
この Hibernate Lazy Loading エラーが何度も発生するため、ネストされたオブジェクトの編集と更新に苦労しています。
私のアプリケーションでは:
- イメージ セットを製品にバインドします。
- フォーマッタを使用して、選択ボックスで使用するイメージセットを変換したので、ユーザーはイメージ セットを選択できます。
- フォームが成功し、オブジェクトがバインドされ、関係が正しく保存されれば、うまく機能します。
- しかし、検証に失敗すると、UI レイヤーがネストされたオブジェクトの値にアクセスしようとするたびに、恐ろしい Lazy Initialization/No Session エラーが発生します。
そこで、回避策として関連オブジェクトを初期化するメソッドを作成しようとしました。
そのメソッドの最初の 3 行は機能しますが (これらは単方向の 1 対 1 です)、4 行目は機能しません (これは多対 1 です)。
また、すべてを Eager fetch タイプにしようとしました。
これらのどちらも機能しませんでした。
問題はおそらく、親オブジェクトを作成していることです。検証エラーが発生した場合、データベースに保存されませんが、ネストされたオブジェクトは、フェッチの種類に関係なく、何らかの理由で遅延プロキシ オブジェクトです (以下のフォーマッタを参照)。 .
どうすればこれを修正できますか?
これはフォーマッタ コンポーネントです。
行 Hibernate.initialize(variant.getImageSet()) が呼び出されたときのスタックトレース:
org.springframework.web.util.NestedServletException: リクエストの処理に失敗しました。ネストされた例外は org.hibernate.LazyInitializationException: プロキシを初期化できませんでした - セッションがありません org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973) 863) javax.servlet.http.HttpServlet.service(HttpServlet.java:644) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) javax.servlet.http.HttpServlet.service(HttpServlet.java: 725) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.web.filter.HiddenHttpMethodFilter.
関連するオブジェクトの関係:
spring - applicationContext.xml で永続的な JPA エンティティを宣言していますか?
だから、これが私がやりたいことです。私はすでにopenerpで見つけることができたので、好きな人もいます。
たとえば、JPA永続エンティティでもあるBeanを簡単に宣言できると思います。
例.java:
もちろん、このクラスにはすでに JPA 永続性インジェクションが含まれているため、Java コードから通常の JPA に基づく永続性クラスとして処理できます。私の目標は、そのインスタンスのいくつかを Spring から宣言することですapplicationContext.xml
:
applicationContext.xml:
本当に面白かったと思うこと:
- 新しく作成されたインスタンスの
persist()
メソッドは、Spring の初期化から呼び出す必要がありましたが、DB にまだ存在しない場合に限られます。 - 存在する場合、インスタンスは永続的な JPA ストレージからロードする必要があります。
それはどういうわけか可能ですか?タスクのサンプルコードはありますか? :-)
spring - org.hibernate.hql.internal.ast.QuerySyntaxException: EdbmsEmployee がマップされていません [from EdbmsEmployee edbmsEmployee where edbmsEmployee.employeeid=?]
私はSpring 3 hibernate 4に取り組んでおり、ORMは初めてです。例外を下回っていますので、助けてください。
この例外についての質問は既に尋ねられていますが、私の場合、これらの解決策を試した後もまだ問題に直面しています。
以下は私のエンティティクラスです
そして、ここに私のdaoimplementaionクラスがあります
そして、daoにアクセスしようとすると、例外を下回っています-
3日から解決しようとしていますが、うまくいきません。
正しいエンティティ クラス javax.persistence.Entity; をインポートしています。HQL で Entity クラス名を使用する "from EdbmsEmployee edbmsEmployee where edbmsEmployee.employeeid=?" (この行の前でコードが正常に実行され、この行でのみ例外が発生します)
私のエンティティクラスでは、すべての注釈を正しく使用しています。次に、この例外「EdbmsEmployee is not maps」が発生する理由。
解決策をグーグルで調べたところ、間違ったエンティティクラスをインポートした場合、または HQL でテーブル名を使用した場合に、この例外が発生することがわかりました。私の両方で正しいです。そして、これらの注釈を使用している間は、エンティティ クラスを xml ファイルにマップする必要はないと思います。
java - Spring MVC で ScrollableResults に基づく Stream を戻り値の型として使用する際の問題
重要な注意: これは、ターゲット修正バージョン 4.1.2のSpring の問題として受け入れられています。
私の目標は、Hibernate の から HTTP 応答を生成するときに、O(1) 空間の複雑さを達成することScrollableResults
です。MessageConverter
aから返されたオブジェクトを処理するために a がディスパッチされる標準的なメカニズムを維持したいと考えています@Controller
。私は以下を設定しました:
MappingJackson2HttpMessageConverter
JsonSerializer
Java 8 を処理するa で強化されましたStream
。- ;
ScrollableResultSpliterator
にラップScrollableResults
する必要があるカスタム。Stream
OpenSessionInViewInterceptor
内で Hibernate セッションを開いたままにしておく必要がありMessageConverter
ます。- に設定
hibernate.connection.release_mode
しON_CLOSE
ます。 - JDBC 接続に必要な ResultSet 保持機能があることを確認してください
con.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT)
。
さらに、そのような保持機能をサポートするデータベースが必要です。PostgreSQL はそのようなデータベースであり、これで問題はありません。
私が遭遇した最後のつまずき点は、HibernateTransactionManager
トランザクションのコミットで使用されるポリシーです。基礎となるセッションが「休止状態で管理されている」場合を除き、disconnect()
他のすべてのものと一緒にカーソルを閉じます。このようなポリシーは、いくつかの特別なシナリオ、特に「会話範囲のセッション」で役立ちますが、これは私の要件からはかけ離れています。
私は悪いハックでこれを回避することができました.問題のメソッドを、削除されたdisconnect()
呼び出しを除いて事実上オリジナルのコピーアンドペーストであるメソッドでオーバーライドする必要がありましたが、プライベートAPIにアクセスするにはリフレクションに頼らなければなりません.
私のアプローチは ResultSet に基づく応答を生成する「正しい方法」であると考えており、Streams API はこのアプローチを非常に便利にするため、サポートされている方法でこれを解決したいと考えています。
私のハックなしで同じ動作を得る方法はありますか? そうでない場合、これは Spring の Jira を介してリクエストするのに適していますか?
jpa - spring roo が SQLResultSetMapping アノテーションを誤って更新するのを止めるにはどうすればよいですか?
私はかなり長い間 Spring Roo を使用してきました。平凡なプログラミングが不要になり、アプリのロジックに集中できる点がとても気に入っています。しかし、私は最近、JPA アノテーションを更新し、属性名を削除し続けるため、ランタイムと戦っていることに気付きました。
派生値 (ユーザーの現在の場所から会場までの距離) を計算し、それを JPA レコード オブジェクトに格納しようとするストアド プロシージャを呼び出しています。この質問SqlResultSetMapping columns as and entitiesで説明されているように、コードを正常に機能させることができました
Spring Roo シェルを無効にしてから、プロジェクトを再コンパイルする前にアノテーションを手動で更新することで、なんとかこれを行うことができました。
ただし、Roo シェルを実行する Spring ソース ツール スイートでこのロジックを記述している場合、Roo ランタイムは常に次のアノテーションを更新します。
@SqlResultSetMapping(name = "findVenuesByDistanceMapping"、エンティティ = { @javax.persistence.EntityResult(entityClass=model.VenueRecord.class) }、列 = { @javax.persistence.ColumnResult(name="distance") })
これに:
@SqlResultSetMapping(name = "findVenuesByDistanceMapping"、エンティティ = { @javax.persistence.EntityResult(model.VenueRecord.class) }、列 = { @javax.persistence.ColumnResult("distance")})
注釈属性識別子が削除されていることがわかります。次に、クラスをコンパイルしようとすると、例外が発生します。Spring Roo から完全に離れない限り、これを回避する方法はないようです。私は何ヶ月もそれを使用しており、回避できない問題を最近発見したばかりなので、これは残念です.
この問題を回避する方法について何か提案はありますか? おそらく、Spring Roo のコードを変更して、正しい形式の注釈を認識できるようにすることはできますか?
java - Spring - DAO サービス アーキテクチャから JPA に移行する
Spring を使用して記述された Web MVC があります。別々の dao クラスとサービス クラスを使用しました。
私の古いコード:
今、Spring JPAを試してみたいと思います。しかし、テスト プロジェクトを dao-service から Spring JPA に書き直すことはできません。
github にプロジェクトのソースがあります https://github.com/martin159/springjpa
プロジェクトを実行すると、次のエラーが表示されます。
Spring JPA で何時間も費やしていますが、まだ修正できません。
私が悪いことをしているかわかりますか?
spring - XML 構成を使用して、Spring で複数のパッケージを packagesToScan プロパティに渡す方法
M 1 (com.test1) とM2 (com.test2)という異なるモジュールにcom.test1とcom.test2という 2 つのパッケージがあるとします。
次の例では、module1パッケージを構成しました。
しかし、 packagesToScanプロパティで Module2 パッケージも構成したいと考えています。構成方法。
spring - アプリケーションがデータベースでクエリを実行しようとすると、「CurrentSessionContext が構成されていません」
現在の spring-boot プロジェクトで、データベースでクエリを実行しようとすると、dao クラスのこのメソッドを使用します (これは、開発のこのステップで使用した一意のものです)。
このエラーが発生しています:
このメソッドは、次のサービス クラスから呼び出されます。
これは私の application.properties ファイルです:
そして、sessionFactory Bean を設定するためのこの構成クラスがあります。
誰かが私がここで見逃しているものを見ることができますか?