Hej,
Przeorganizowałem trochę kod mojej aplikacji CRUD, którą tworzę w celach edukacyjnych. Wcześniej miałem metodę pozyskującą wszystkie encje z bazy, która niczego nie zwracała, tylko od razu wypisywała na konsolę te encje i wszystko działało (dodam, że session.createQuery miało dokładnie taki sam parametr, więc nie jest to chyba wina błędnego zapytania do SQL). Postanowiłem zmienić tę metodę tak aby zwracała listę wyników w celu dalszego testowania i rozbudowy programu. Teraz podczas wywoływania tej metody dostaję error:
Error performing load command : org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [domain.Email#103]
Dodam, że kiedy wywołuję metodę zwracającą encję po id to wszystko działa ok, dlatego przypuszczam, że nie jest to problem z bazą danych ani z encjami.
Wspomniana metoda:
public static List<Contact> listAllContacts(){
List<Contact> listContact = new ArrayList<Contact>();
Session session = null;
try {
session = HibernateUtils.openSession();
listContact = session.createQuery("SELECT c FROM Contact c").getResultList();
} catch (Exception e) {
e.printStackTrace();
}finally {
if (session != null && session.isOpen()) {
session.close();
}
}
return listContact;
}
Kontroler, który ją wywołuje:
public void getAllContacts(){
List<Contact> allContacts = ContactRepository.listAllContacts();
if (allContacts == null) {
System.out.println("No contact found. ");
} else {
for (Contact contact : allContacts) {
System.out.println(contact.toString());
}
}
}
pełen kod tutaj