外部キーを介してテーブルにリンクされているコレクションを取り戻そうと何日も苦労した後、リンクしているテーブルが実際に実際のデータを使用して他のテーブルにリンクしていることに気付きました(正規化されたテーブルの場合は1つを選択してください)。
外部キーへの参照を使用してManyToOne注釈付き変数からコレクションを取得するのにまだ苦労していますが、実際に情報を含むテーブルからデータをプルバックする方法はありますか?誰かがこれのインスタンスに遭遇しましたか?
更新:リクエストごとに、いくつかのコードインスタンスを投稿します...これは、呼び出すエンティティ内の名前付きクエリになります...
@NamedQuery(name="getQuickLaunchWithCollections", query = "SELECT q FROM QuickLaunch q LEFT JOIN FETCH q.quickLaunchDistlistCollection LEFT JOIN FETCH q.quickLaunchPermCollection LEFT JOIN FETCH q.quickLaunchProviderCollection")})
これらは私が埋めようとしているコレクションになります...
@OneToMany(mappedBy="quickLaunchId", fetch=FetchType.EAGER)
private List<QuickLaunchPerm> quickLaunchPermCollection;
@OneToMany(mappedBy="quickLaunchId", fetch=FetchType.EAGER)
private List<QuickLaunchProvider> quickLaunchProviderCollection;
@OneToMany(mappedBy="quickLaunchId", fetch=FetchType.EAGER)
private List<QuickLaunchDistlist> quickLaunchDistlistCollection;
ご覧のとおり、フェッチタイプをeagerに設定しています。技術的には、データを取り戻す必要がありますか?しかし実際には、これらは私が実際にプルバックしたいデータをテーブルにリンクしているだけです。最終的にそのデータを取り戻す方法を理解する必要があります。
これが私がその名前付きクエリと呼んでいる方法です...
listQL = emf.createNamedQuery("getQuickLaunchWithCollections").getResultList();
了解しました。LEFTJOINFETCH
が、ランタイムに何らかの期待を投げかけているように見えます。それが何であるかについてはかなり不明確です。でも、そのテクニックではどこにも行けないような気がします。少し違うことをやってみます。