質問

私は使用しています JPQL データを取得します。ステートメントを使用してデータを取得できます

List persons = null;
persons = em.createQuery("select p.albumName from PhotoAlbum p , Roleuser r 
where r = p.userId and r.userID = 1");

これを使用してアルバム名を取得できます。

int i=0;
for (i=0;i<persons.size(); i++)
{   
     System.out.println("Testing n "+ i +" " +  persons.get(0));
}

今、私はアルバム名とロールカーズの行の名前を取得したい firstname

クエリを使用しています

persons = em.createQuery("select r.firstName , p.albumName from PhotoAlbum p ,   
Roleuser r where r = p.userId and r.userID = 1").getResultList();

ここで、sirstNameとalbumnameをpersons.get(0)として列とalbumnameを取得するにはどうすればよいですか

コードを実行することで:

 for (i=0;i<persons.size(); i++)
    {
        //r = (Roleuser) persons.get(i);
        System.out.println("Testing n "+ i +" " + persons.get(i));
    }

私はこれを手に入れています:

Testing n 0 [Ljava.lang.Object;@4edb4077
INFO: Testing n 1 [Ljava.lang.Object;@1c656d13
INFO: Testing n 2 [Ljava.lang.Object;@46dc08f5
INFO: Testing n 3 [Ljava.lang.Object;@654c0a43

どのようにマッピングできますか persons.get(0) そして、取得します firstnamealbumname?

役に立ちましたか?

解決

さて、whens firstNameとalbumnameをpersons.get(0)として取得するにはどうすればよいですか?

複数のクエリ select_expressions Select句では、anを返します Object[] (またはa ListObject[])。 JPA仕様から:

4.8.1 select句の結果タイプ

クエリの選択節で指定されたクエリ結果のタイプは、エンティティ抽象スキーマタイプ、ステートフィールドタイプ、集計関数の結果、構造操作の結果、またはこれらのシーケンスです。

SELECT句の結果タイプは、の結果タイプによって定義されます select_expressions その中に含まれています。複数の場合 select_expressions Select句で使用されていますが、クエリの結果はタイプです Object[], 、およびこの結果の要素は、SELECT句の仕様の順序に対応し、それぞれの結果タイプのタイプに対応します select_expressions.

だからあなたの場合、あなたはおそらくこのようなものが欲しい:

for (i=0;i<persons.size(); i++) {
    //r = (Roleuser) persons.get(i);
    System.out.println("Testing n " + i + " " + persons.get(i)[0] + ", " + 
        persons.get(i)[1]);
}

From句でデカルト製品を使用して内側の結合を指定し、句の結合条件は、エンティティ関係を明示的に結合するよりも典型的ではないことに注意してください( [LEFT [OUTER] | INNER ] JOIN 構文)。セクション全体を参照してください 4.4.5参加 仕様で。

参照

  • JPA 1.0仕様
    • セクション4.8.1「SELECT句の結果タイプ」
    • セクション4.8.2「選択節のコンストラクター式」
    • セクション4.4.5「結合」
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top