Good Evening Everyone.
So I have a little problem with List in Java. Let's start from beggining. Here is method which returns list from Query in HQL :
public List<PraktykiEntity> getPracticeOfStudent(Long nrAlbumu) {
Query query = em.createQuery("SELECT p FROM PraktykiEntity p WHERE p.nrAlbumu=?1");
query.setParameter(1, nrAlbumu);
List list = query.getResultList();
if (!list.isEmpty()) {
return list;
} else {
return null;
}
}
then a helper class :
public class PraktykaInfo {
public Long idPraktykiStudenckiej; //idOfStudentPractice
public SzablonyPraktykEntity szablonPraktyki; //templateOfPractice
public PraktykodawcyEntity praktykodawca; //Employer
public StatusyEntity statusPraktyki; //statusOfPractice
public List<KierunkiStudiowEntity> kierunek; //Course
public TypyPraktykEntity typPraktyki; //typeOfPractice
public LataAkademickieEntity rokAkademicki; //academicYear
public List<StudenciEntity> student;
public List<OpiekunowiePraktykEntity> opiekunPraktyki; //tutor
public List<KoordynatorzyPraktykEntity> koordynatorPraktyki; //coordinator
public AdresyEntity adresPracodawcy; //Employer's address
public PorozumieniaEntity porozumienie; //agreement}
And what i want to do - get List<PraktykiEntity>
from first method, then initialize new helper List<PraktykaInfo>
and iterate through it, set correct object from first list and then return it. At first i thought list.get(i) will work but im getting error "index out of bounds". I've heard about list.add and .set but don't know how to use them. Here is the method. And i do know that info.get(i) has nothing that's why i am encountering error "index out of bounds"
public List<PraktykaInfo> getPracticeOfStudent(Long nrAlbumu) {
List<PraktykiEntity> list = ipraktykiDAO.getPracticeOfStudent(nrAlbumu);
List<PraktykaInfo> info = new ArrayList<PraktykaInfo>();
//System.out.println(list.size());
for(int i = 0; i<list.size(); i++) {
PraktykiEntity practice = ipraktykiDAO.getRow(list.get(i).getIdPraktykiStudenckiej());
if(practice !=null) {
info.get(i).setIdPraktykiStudenckiej(practice.getIdPraktykiStudenckiej());
info.get(i).setSzablonPraktyki(iszablonyPraktykDAO.getTemplate(practice.getIdSzablonu()));
info.get(i).setPraktykodawca(ipraktykodawcyDAO.findEmployer(practice.getIdPraktykodawcy()));
info.get(i).setStatusPraktyki(istatusyDAO.getStatus(practice.getIdStatusu()));
info.get(i).setKierunek(ikierunkiStudiowDAO.getCourseInfo(practice.getIdKierunku()));
info.get(i).setTypPraktyki(itypyPraktykDAO.getTypeOfTraineeship(practice.getIdTypuPraktyki()));
info.get(i).setRokAkademicki(ilataAkademickieDAO.getYearOfCourse(practice.getIdRokuAkademickiego()));
if(practice.getNrAlbumu() !=null) {
info.get(i).setStudent(istudenciDAO.getStudentInfo(practice.getNrAlbumu()));
}
info.get(i).setOpiekunPraktyki(iopiekunowiePraktykDAO.getTutorInfo(practice.getIdOpiekunaPraktyk()));
info.get(i).setKoordynatorPraktyki(ikoordynatorzyPraktykDAO.getCoordinatorInfo(practice.getIdKoordynatoraPraktyk()));
info.get(i).setAdresPracodawcy(iadresyDAO.findByIdAdresu(practice.getIdAdresu()));
if(practice.getIdPorozumienia() !=null) {
info.get(i).setPorozumienie(iporozumieniaDAO.getAgreement(practice.getIdPorozumienia()));
}
} else {
return null;
}
}
return info;
}
!=null
– papski Mar 20 '15 at 21:56they're necessary because methods from IF goes to EntityManager.find and when it returns null i do get exception, i can fix that by making new method that returns list from query, but, that IF was simplier and faster to make.