我有一个相当大的模型申请人:
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();
}
但是,我得到了一个 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");
或者有更好的方式来输入搜索查询吗?
最佳答案
由于您显然正在使用 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());
}
关于java - JPA 类型的搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4022267/