استفسارات البحث المكتوبة JPA
-
26-09-2019 - |
سؤال
لدي مقدم طلب كبير إلى حد ما:
public class Applicant{
private Long id
private String name;
...
...
}
لملء قائمة اختيار ، أحتاج إلى قائمة (معرف ، اسم) tuples وأستخدم استعلام البحث هذا:
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