データベース構造は次のとおりです
戦略には外部キーメンバー_ID(関連するメンバーテーブル)、外部キー戦略_category(関連カテゴリテーブル)、およびメンバーテーブルに外部キーポジション_ID(関連するポジトンテーブル)があります
フロントデスクページがステートシーテーブルの内容を直接照会する場合、HQLステートメントはこのように記述されます
stringhql = "fromstrategywhered =:id";
コンソールは、Nosessessionエラーを報告します。これは、Hibernateがデフォルトでロードされるのが面倒なためです。関連するオブジェクトをロードする必要がある場合にのみ、関連するオブジェクトがロードされます。ここで、セッションが閉じられたら、セッションが報告されます。
だからそれを解決する方法
ここでは、アノテーションのデフォルトのレイジーロードを緊急荷重に変更するのではなく、leptjoinfetchを使用してオブジェクトをロードすることをお勧めします。これは非常に効率的です。
声明は次のとおりです
StrategyStrategy =(Strategy)SessionFactutil.getSession()。createQuery( "fromstrategysleftjoinfetchs.strategycategoryleftjoinfetchs.memberleftjoinfetchs.member.positionswheres.id =::id")。setinteger( "id"、uniqueresult()。
ここで注意する必要があるのは、関連するメンバーテーブルがポジションテーブルに関連付けられているため、一緒にロードする必要があることです。あなたが注意する必要があるもう1つのことは、ここの各テーブルの主要な名前はIDであるため、ここのS.IDをこのように書く必要があるということです。指定されていない場合、システムを識別できません。
要約します
上記は、この記事が冬眠の緊急積み込み問題について議論していることについてです(複数の外国の主要な協会)。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!