おはようございます。私はこの質問に答えようとずっと探していました。
別のテーブルへの外部キーを持つテーブルがあり、両方のテーブルからの結果が必要な場合は、基本SQLを使用して、外部キーに対して内部結合を実行し、要求したすべての結果情報を取得します。外部キーでJPAエンティティを生成すると、外部キー列に@ oneTooneアノテーション、@ oneToMany、@ ManyToMany、@ManyToOneなどが追加されます。外部キーに@oneToManyがあり、関連するテーブル列の主キーに対応する@ManyToOneがあります。また、正しい列に@joinedONアノテーションがあります...最初からすべてを選択する基本的な名前付きクエリもあります。テーブル。基本的なSQLで行う必要があるように、両方のテーブルから情報を取得するために結合を行う必要がありますか?それとも、私がそれらの注釈を持っているという事実は、それらのレコードを私のために引き戻しますか?外部キーの関係に基づいてテーブルBに関連するテーブルAがあり、両方のテーブルのレコードが必要な場合は、外部キーに基づいてテーブルAからBに結合するか、
Select * From A inner Join B on A.column2 = B.column1
または他のいくつか-そのような意味がない(正確に正しくない場合は私のSQLを許してください、しかしあなたは考えを理解します)...そのクエリはAとBからすべての列を選択します私が使用している名前付きクエリ...
@NamedQuery(name="getQuickLaunch", query = "SELECT q FROM QuickLaunch q")
これが、ステートレスセッションBeanでの呼び出し方法です...
try
{
System.out.println("testing 1..2..3");
listQL = emf.createNamedQuery("getQuickLaunch").getResultList();
System.out.println("What is the size of this list: number "+listQL.size());
qLaunchArr = listQL.toArray(new QuickLaunch[listQL.size()]);
}
この呼び出しはテーブルAのすべての列を返しますが、テーブルBの列が不足しています。私の最初の本能は、クエリを変更して2つのテーブルを結合することです...しかし、そのようなものを使用することのポイントは何であるかを考えさせられますJPAの場合、とにかく別の場所で作成するのと同じクエリを作成するだけです。さらに、私は単純なものを見落としたくありません。では、オーバーフロー愛好家をスタックするとはどういうことですか?JPAを使用して結合されたクエリのすべてのデータを取得するにはどうすればよいですか?