2016-05-20 7 views
0

私はJPQLを初めて使用しており、エンティティにない追加のパラメータを取得しようとしていますが、それを行う方法がわかりません。JPQL - エンティティ内で余分なパラメータを取得するにはどうすればよいですか?

ここでフォーラムで検索したところ、DTOを使用している人もいましたが、その使用方法はわかりません。ここで

は私の実体である:

@Entity 
@Table(name = "person") 
public class Person implements Serializable { 

    private int id; 
    private String name; 
    private String email; 
    private int age; 

... 
} 

そして、私のJPQL:それはコラムではありませんので、

SELECT COUNT(a.name) as countOfNames, a FROM Person a WHERE a.name like :name 

にはどうすればmyentityオブジェクトの内部でcountOfNames結果を得ることができますか?

+0

を使用することですか? 'PlannerAgreement'や' Person'? –

+0

それはコピーからの名前だった、私の悪い、私はすでに修正されました。 JPAプロバイダはeclipselink – Banns

答えて

1

最も簡単な方法は、コンストラクタ式は、使用JPAプロバイダ

package com.entites 

public class PersonDto { 

    private Person person; 

    private Integer countOfNames; 

    public PersonDto(Person person, Integer countOfNames) { 
     this.person = person; 
     this.countOfNames = countOfNames; 
    } 

} 

select new com.entites.PesronDto(a, count(a.name)) 
    from Person a 
    where a.name like :name 
+0

ですが、検索は@EntityなしでDTO自体で行われますか? – Banns

+0

@Banns結果として 'List 'となります。もちろんDTOの代わりにPersonを使うことができますが、カウントのために追加の列が必要であり、コンストラクタのフィールドをコピーする必要があります。 –

関連する問題