Zapytanie SQL + String w Javie

0

Cześć, mam metodę zwracającą listę zwierzaków z bazy po imieniu jego właściciela tylko w zapytaniu mam String'a i nie wiem jak go obsłużyć w przypadku int'a jest zupełnie inaczej. Jak to przeprawić aby odpaliło. Oto kod:

public void listPets( String nazwisko ){
            Session session = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = null;
            
                tx = session.beginTransaction();
                //List<Animal> animals = session.createQuery("From Animal Where owner_id = "+id).list(); odczyt listy po ID wlasciciela
                List<Animal> animals = session.createQuery("from Animal where owner_id = (select id from owner where nazwisko = :nazwisko").list();


                for (Iterator iterator1 =animals.iterator(); iterator1.hasNext();)
                {
                   Animal animal = (Animal) iterator1.next();
                    System.out.println("\n");
                    System.out.print(" ID: " + adnimal.getId() + " First Name: " + animal.getImie() + "\n");
                }
                tx.commit();
            
            
        }
0
String hql = "FROM Employee E WHERE E.id = :employee_id";
Query query = session.createQuery(hql);
query.setParameter("employee_id",10);
List results = query.list();

Więcej przykładów:
http://www.tutorialspoint.com/hibernate/hibernate_query_language.htm

0

Nie śmiga :( według przykładu mam coś takiego:

List<Animal> animals;
                Query query = session.createQuery("from Animal where owner_id = (select id from owner where nazwisko = :nazwisko");
                query.setParameter("nazwisko",nazwisko);
                animals = query.list();
                */
                for (Iterator iterator1 = animals.iterator(); iterator1.hasNext();)
                {
                    Animal animal = (Animal) iterator1.next();
                    System.out.println("\n");
                    System.out.print(" ID: " + animal.getId() + " First Name: " + animal.getImie() + "\n");
                }
                tx.commit();
0

A możesz napisać co zwraca?
Może masz jakiś exception w logach.
Sprawdzałeś to zapytanie bezpośrednio w bazie danych (nie w kodzie)?

0

Zwraca:
ERROR: line 1:89: expecting CLOSE, found 'null'
line 1:89: expecting CLOSE, found 'null'
I tak się zastanawiam jakim cudem null?!
W pgAdminie normalnie wyrzuca mi to co ma wyrzucać :( nie mam pojęcia o co chodzi.

pzdr

0

a ten tx.commit() nie powinien być przed twoją pętlą?

0

Nie, ponieważ na początku zrobiłem zwracanie po id. Nie mam pojęcia o co chodzi próbowałem już na milion sposobów chyba .

2
 
 Query query = session.createQuery("from Animal where owner_id = (select id from owner where nazwisko = :nazwisko");

Brak prawego nawiasu w zapytaniu.

0

Jak nie lubisz JPQL-a to możesz spróbować z createNativeQuery przymuje normalnego SQL-a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1