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

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

要填充一个选择列表,我需要的(ID,姓名)元组的列表,我用这个搜索查询:

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

}

不过,我得到的对象[]的清单,我真的不希望这些在业务层到相应类型(长和字符串)转换。什么是接近最好的方法?我应该遍历列表并返回前手动做类型转换?或者我应该做一个辅助类:

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");

还是有更好的方式来输入搜索查询?

有帮助吗?

解决方案

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

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

然后,只需使用的对象:

for(Applicant app: getApplicants()){
    selectionList.populate(app.getName(), app.getId());
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top