Hibernateでカスケードクエリが発生した場合、怠zyなロードの問題がある可能性があります。たとえば、アカウント(管理者)クラス、カテゴリ(製品カテゴリ)、製品(製品)クラスがあります。左から右へ、それは1対多くの関係であり、右から左へ、 @manytoone(fetch = fetchtype.lazy)が設定されています。ここで、製品情報を見つけて、JSON形式にパッケージ化してフロントデスクに渡したいと思います。バックグラウンドでクエリステートメントを次のように使用します。
製品Pから左から参加してください。
これにより、製品を見つけることができ、製品のカテゴリも入力されます。ただし、カテゴリのアカウントは実際のオブジェクトではなく、一時的なプロキシオブジェクトです。私は製品をチェックし、カスケードカテゴリのみをチェックしたため、これは理解しやすいです。カテゴリとアカウントについては、実際の(怠zy)に従って構成されています。
クエリ製品をマップに入れてから、JSON形式に変換してフロントデスクに戻すと、アカウントオブジェクトがJSONの変換プロセス中に取得されるため、怠zyなロードの問題があります。非常に直接的ではないがあまり良くない解決策は、アカウント情報を見つけることができるように、カテゴリの怠zyなカテゴリを熱心に変更することですが、これは良くありません。そのため、別の方法を使用します:struts.xmlでブラックリストを設定し、定期式を使用してJSON形式に変換するときにカテゴリのアカウントを除外するため、アカウントオブジェクトを確認せず、怠lazの負荷の問題はありません。次のように:
この時点で、問題はないはずです。しかし、私のプロジェクトでは、怠zyなロードの例外をまだ報告しています。つまり、この方法で構成した後は機能しません。しかし、理論的には、構成後、それは問題なく、データはJSON形式にパッケージ化され、正常にフロントデスクに渡すことができます。この問題は2日間私を悩ませていたので、私は単に怠zyに変わり、プロジェクトを始めました。
今日、私は別の冬眠例の例外に連絡し、それを解決しました!今日、冬眠では、製品情報を取得するためにGETメソッドを呼び出したいと思いますが、取得することはできません。バックグラウンドコンソールにメッセージはありません。開発モードをオンにしてから、フロントデスクにエラーメッセージが表示されました。
java.lang.classcastexception:cn.it.shop.model.product _ $$ _ javassist_0はjavassist.util.proxy.proxy </span>にキャストできません
プロキシに変換することはできませんか? ?なぜエージェントに変更するのですか?一般的に、エージェントを実際のオブジェクトに変換することはできませんか?そこで、私はインターネットを検索しましたが、この問題は、競合するプロジェクトのJavassist Jarパッケージによるものである可能性があることがわかりました。私はそれをチェックするためにプロジェクトに行きました、そしてそれは真実であることが判明しました:
それは本当に矛盾しています...だから私はStrutsパッケージでJavassist-3.11.0.ga.jarを削除しました。冬眠は正しく、通常の製品情報を取得できます。それから私は2日前にStruts2がJSONに切り替えるという問題を思い出したので、私は熱心に戻って怠zyに戻りました。問題はなくなり、通常はJSONに変換することもできました。私は落ち込んでいた。それは本当に瓶パッケージ間の競合によって引き起こされました。当時エラーはなかったが、フロントデスクに返されたJSONデータが見つからなかったからです。 JSONデータが返されないことしか知っていませんでした。 JSONへのバックグラウンド転送の問題であるに違いありません。既存の経験によると、その90%は怠zyな負荷でしたが、JARパッケージの競合によって引き起こされるとは思っていませんでした。
後で:JARパッケージが競合せず、JSONを変換できない場合、それは基本的に怠zyな負荷によって引き起こされる問題です。 struts.xmlでブラックリストを構成して、怠zyなロードオブジェクトをフィルタリングする方法は非常に実用的です。 Pojoの構成を変更する必要はありません。 JSONに転送したいフィールドを転送しますが、やりたくない場合は非常に便利です。
オリジナルリンク:http://blog.csdn.net/eson_15/article/details/51394302
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。