JPA类型搜索查询

时间:2010-10-26 09:22:23

标签: java jpa type-conversion jpa-2.0 jpql

我有一个相当大的模特申请人:

public class Applicant{
 private Long id
 private String name;
 ...
 ...
}

要填充选择列表,我需要一个(id,name)元组列表,我使用此搜索查询:

public List getNames() {
    Query query = em.createQuery("select a.id, a.name from Applicant a");
    return query.getResultList();

}

但是,我得到了Object []的列表,我真的不想将业务层中的这些转换为相应的类型(Long和String)。解决这个问题的最佳方法是什么?我应该遍历列表并在返回之前手动进行类型转换吗?或者我应该做一个帮助类:

public class ApplicantTuple{
 public Long id
 public String name;

 public Application(Long id, String name) {
    ...
 }

}

然后有一个搜索查询:

Query query = em.createQuery("select NEW my.model.ApplicantTuple(a.id, a.name) from Applicant a");

或者有更好的方法来输入搜索查询吗?

1 个答案:

答案 0 :(得分:2)

由于您显然使用的是JPA2,请使用类型安全的方法:

public List<Applicant> getApplicants() {
    TypedQuery<Applicant> query = em.createQuery(
        "select a.id, a.name from Applicant a",
        Applicant.class
    );
    return query.getResultList();
}

然后只使用Objects:

for(Applicant app: getApplicants()){
    selectionList.populate(app.getName(), app.getId());
}