Jpa напечатанные поисковые запросы
-
26-09-2019 - |
Вопрос
У меня довольно большая модель заявителя:
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());
}
Не связан с StackOverflow