Zapytanie SQL + String w Javie

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:

Kopiuj
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();
            
            
        }
krzysiek050
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:1272
0
Kopiuj
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:

Kopiuj
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

PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
0

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

NE
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 4 lata
  • Postów:47
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 .

szarotka
  • Rejestracja:ponad 9 lat
  • Ostatnio:18 dni
  • Postów:533
2
Kopiuj
 
 Query query = session.createQuery("from Animal where owner_id = (select id from owner where nazwisko = :nazwisko");

Brak prawego nawiasu w zapytaniu.

edytowany 2x, ostatnio: szarotka
Zobacz pozostałe 2 komentarze
NE
szczerze powiedziawszy nawet nie wiem czego mam szukać za bardzo. Adnotacje typu @OnetoMany itd są. W pgAdmin powinna utworzyć się nowa tabela coś w stylu tabela1_tabela2?
szarotka
"powinna utworzyć", to pojęcie względne - zależy od tego jak skonfigurowałeś, jeżeli masz drop-create lub update to tak. Aczkolwiek nazwa "user_sequences" sugeruje, że problem dotyczy sekwencji.
NE
miałem drop-create lecz zostało to szybko usunięte. Ok sekwencji, możesz jakoś to rozwinąć pod jakimi frazami mam szukać rozwiązania. Kiedy wpisuje w wujka nie za wiele mi mówi.
NE
konfiguracja jest i była dobrze :) problem rozwiązany i tłumacze co było przyczyną : kiedy w klasie stosuje się adnotacje @Entity następnie @Table i daje się nazwe np = test wtedy trzeba w zapytaniu odwołać się nazwy z adnotacji a nie do nazwy w moim przypadku w pgAdmin :) pozdrawiam i dzięki!
AN
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:31
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.