Вопрос

У меня довольно большая модель заявителя:

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