java query SQL_Java SQL Query - Hibernate

So I got query that I made list from and then pass that list to another method that should print it.

Query query = session.createQuery("from Osoba as o FETCH ALL PROPERTIES WHERE ((o.id) = (id_osoby)) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?)");

// Query query = session.createQuery("from Osoba WHERE (LOWER(zainteresowania) LIKE ?)"); // Stara, zachowana tymczasowo

query.setString(0,"%"+input1+"%");

query.setString(1,"%"+input2+"%");

query.setString(2,"%"+input3+"%");

query.setString(3,"%"+input4+"%");

query.setString(4,"%"+input5+"%");

List osoby = query.list(); // robimy sobie liste na podst zapytania

wyswietlWybrane(osoby);

session.getTransaction().commit();

session.close();

}

for eg. when I want to print all I just use:

List osoby = session.createQuery("from Osoba").list(); // tworzymy sobie liste z zapytania do bazy ktora wyswietli nam wszystkich

wyswietlWybrane(osoby); // przekazujym ta liste do innej i wyswietlamy

method that prints what I pass:

private void wyswietlWybrane(List osoby) {

for (Osoba a : osoby) {

List zainteresowania1 = a.getZainteresowania();

System.out.println(a.getId() +". " + a.getImie() + " " + a.getNazwisko() + "\nTelefon: " + a.getTelefon() + "\nEmail: " + a.getEmail() + "\nUczelnia: " + a.getUczelnia() + "\t\n" + "Skad slyszal: " + a.getSkadSlyszal());

System.out.print("Obszary zainteresowan: ");

for (Iterator iterator2 = zainteresowania1.iterator(); iterator2.hasNext();){

Zainteresowania nazwa = (Zainteresowania) iterator2.next();

System.out.print(nazwa.getZainteresowanie() + ". ");

}

}

}

map files:

Osoba

/p>

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

Zainteresowania:

Osoba class:

private int id;

private String imie;

private String nazwisko;

private String email;

private String telefon;

private String uczelnia;

private String doswiadczenie;

private String skadSlyszal;

private List zainteresowania;

public Osoba(){ // domyslny

}

// konstruktor zeby mozna bylo sobie w jednej linijce dodawac osobe

public Osoba(String imie1, String nazwisko1, String telefon1, String email1, String uczelnia1, String doswiadczenie1, String skadSlyszal1 ){

this.imie = imie1;

this.nazwisko = nazwisko1;

this.email = email1;

this.telefon = telefon1;

this.uczelnia = uczelnia1;

this.doswiadczenie = doswiadczenie1;

this.skadSlyszal = skadSlyszal1;

}

// kontr przyj caly obiekt

public Osoba(Osoba tymczasowa){

this.imie = tymczasowa.imie;

this.nazwisko = tymczasowa.nazwisko;

this.email = tymczasowa.email;

this.telefon = tymczasowa.telefon;

this.uczelnia = tymczasowa.uczelnia;

this.doswiadczenie = tymczasowa.doswiadczenie;

this.skadSlyszal = tymczasowa.skadSlyszal;

}

// gettery, settery

public int getId() {

return id;

}

public String getImie() {

return imie;

}

public String getNazwisko() {

return nazwisko;

}

public String getEmail() {

return email;

}

public String getTelefon() {

return telefon;

}

public String getUczelnia() {

return uczelnia;

}

public String getDoswiadczenie() {

return doswiadczenie;

}

public List getZainteresowania() {

return zainteresowania;

}

public String getSkadSlyszal() {

return skadSlyszal;

}

public void setImie(String string) {

this.imie = string;

}

public void setId(int in) {

this.id = in;

}

public void setNazwisko(String string) {

this.nazwisko = string;

}

public void setEmail(String string) {

this.email = string;

}

public void setTelefon(String string) {

this.telefon = string;

}

public void setUczelnia(String string) {

this.uczelnia = string;

}

public void setDoswiadczenie(String string) {

this.doswiadczenie = string;

}

public void setZainteresowania(List string) {

this.zainteresowania = string;

}

public void setSkadSlyszal(String string) {

this.skadSlyszal = string;

}

Zainteresowania class:

private int id;

private String zainteresowanie;

public Zainteresowania(){ // domyslny

}

public Zainteresowania(String zainteresowanie){

this.zainteresowanie = zainteresowanie;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getZainteresowanie() {

return zainteresowanie;

}

public void setZainteresowanie(String zainteresowanie) {

this.zainteresowanie = zainteresowanie;

}

Ok well when I am trying to do this seach query and I pass argument I am getting an error:

ERROR: Invalid path: 'null.zainteresowanie'

kwi 22, 2015 3:05:00 PM org.hibernate.hql.internal.ast.ErrorCounter reportError

ERROR: Invalid path: 'null.zainteresowanie'

Invalid path: 'null.zainteresowanie'

Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path: 'null.zainteresowanie' [from com.mycompany.kwestionariusz.Osoba as o FETCH ALL PROPERTIES WHERE ((o.id) = (id_osoby)) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?)]

when I change query to this:

Query query = session.createQuery("from Osoba as o, Zainteresowania as z FETCH ALL PROPERTIES WHERE ((o.id) = (id_osoby)) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?)");

I am getting error:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.mycompany.kwestionariusz.Osoba

at com.mycompany.kwestionariusz.Osoba.wyswietlWybrane(Osoba.java:226)

at com.mycompany.kwestionariusz.Osoba.wyszukajOsoby(Osoba.java:218)

at com.mycompany.kwestionariusz.main.main(main.java:42)

Line 226 (its wyswietlWybrane method, posted up there)

for (Osoba a : osoby) {List zainteresowania1 = a.getZainteresowania();

line 218 (part of searching method):

wyswietlWybrane(osoby);

I really do need help, tried it in many ways, nothing seem to works.

I believe that the reason is that search query is creating other List than Osoba list - but I need to compare Osoba ID to Zainteresowania ID_Osoby, so how to do this and still be able to pass my result list to my wyswietlWybrane method?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值