LoginSignup
0
0

[リサーチ・メモ] JPQL特定カラム取得

Posted at

背景

通常は、エンティティのすべてを取得していたが、大量データを扱う際には特定カラム取得となり、SQLとは違った記載方法だった為、メモとして纏める。

全カラムを取得する場合

<named-query name="findPersonsAddressInfo">
    <query>
        SELECT 
            p, a
        FROM 
            Person p 
        INNER JOIN 
            Address a
        ON
            p.addressId = a.addressId
        </query>
</named-query>

特定カラムを取得する場合

新規エンティティを作成する方法

新規エンティティを作成し、JPQLは今まで通りの記述をする。

既存エンティティにコンストラクタを追加する方法

※エンティティにマッピングする為のコンストラクタを追加し、JPQLにはカラムを指定しNEWを使用してマッピングする。

public class Person {
  //デフォルトコンストラクタ
  public Person(){
  }

  //特定カラム取得
  public Person(String name, int age){
    super();
    this.name = name;
    this.age = age;
  }
}
<named-query name="findPersonsAddressInfo">
    <query>SELECT NEW パス.Person( 
            p.name, p.age), a
        FROM 
            Person p 
        INNER JOIN 
            Address a
        ON
            p.addressId = a.addressId
    </query>
</named-query>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0