Java SQL Query - Hibernate -


so got query made list , pass list method should print it.

query query = session.createquery("from osoba o fetch properties ((o.id) = (id_osoby)) , (lower(zainteresowania.zainteresowanie) ?) , (lower(zainteresowania.zainteresowanie) ?) , (lower(zainteresowania.zainteresowanie) ?) , (lower(zainteresowania.zainteresowanie) ?) , (lower(zainteresowania.zainteresowanie) ?)");          // query query = session.createquery("from osoba (lower(zainteresowania) ?)"); // stara, zachowana tymczasowo                         query.setstring(0,"%"+input1+"%");             query.setstring(1,"%"+input2+"%");             query.setstring(2,"%"+input3+"%");             query.setstring(3,"%"+input4+"%");             query.setstring(4,"%"+input5+"%");              list<osoba> osoby = query.list(); // robimy sobie liste na podst zapytania             wyswietlwybrane(osoby);              session.gettransaction().commit();             session.close();            }   

for eg. when want print use:

list<osoba> osoby = session.createquery("from osoba").list(); // tworzymy sobie liste z zapytania bazy ktora wyswietli nam wszystkich                  wyswietlwybrane(osoby); // przekazujym ta liste innej wyswietlamy 

method prints pass:

private void wyswietlwybrane(list<osoba> osoby) {        (osoba : 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: ");         (iterator iterator2 = zainteresowania1.iterator(); iterator2.hasnext();){             zainteresowania nazwa = (zainteresowania) iterator2.next();             system.out.print(nazwa.getzainteresowanie() + ".  ");          }     }      } 

map files:

osoba

<?xml version="1.0"?> <!doctype hibernate-mapping public     "-//hibernate/hibernate mapping dtd 3.0//en"     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  <hibernate-mapping package="com.mycompany.kwestionariusz">      <class name="osoba" table="daneosobowe">          <id name="id" column="id" type="integer">             <generator class="native"/>         </id>          <property name="imie" column="imie"/>          <property name="nazwisko" column="nazwisko"/>          <property name="telefon" column="telefon"/>                  <property name="email" column="email" />                  <property name="uczelnia" column="uczelnia" />                  <property name="doswiadczenie" column="doswiadczenie" />                  <list name="zainteresowania" cascade="all">                 <key column="id_osoby"/>                 <list-index column="idx"/>                 <one-to-many class="zainteresowania"/>                 </list>                  <property name="skadslyszal" column="skadslyszal" />      </class>  </hibernate-mapping> 

zainteresowania:

<?xml version="1.0" encoding="utf-8"?> <!doctype hibernate-mapping public "-//hibernate/hibernate mapping dtd 3.0//en" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.mycompany.kwestionariusz">     <class name="zainteresowania" table="zainteresowania">                 <id name="id" type="int" column="id">                 <generator class="native"/>                 </id>                 <property name="zainteresowanie" column="zainteresowanie" type="string"/>         </class>  </hibernate-mapping> 

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 when trying seach query , pass argument getting 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 o fetch properties ((o.id) = (id_osoby)) , (lower(zainteresowania.zainteresowanie) ?) , (lower(zainteresowania.zainteresowanie) ?) , (lower(zainteresowania.zainteresowanie) ?) , (lower(zainteresowania.zainteresowanie) ?) , (lower(zainteresowania.zainteresowanie) ?)] 

when change query this:

query query = session.createquery("from osoba o, zainteresowania z fetch properties ((o.id) = (id_osoby)) , (lower(z.zainteresowanie) ?) , (lower(z.zainteresowanie) ?) , (lower(z.zainteresowanie) ?) , (lower(z.zainteresowanie) ?) , (lower(z.zainteresowanie) ?)"); 

i getting error:

exception in thread "main" java.lang.classcastexception: [ljava.lang.object; cannot cast com.mycompany.kwestionariusz.osoba     @ com.mycompany.kwestionariusz.osoba.wyswietlwybrane(osoba.java:226)     @ com.mycompany.kwestionariusz.osoba.wyszukajosoby(osoba.java:218)     @ com.mycompany.kwestionariusz.main.main(main.java:42) 

line 226 (its wyswietlwybrane method, posted there)

for (osoba : osoby) {list zainteresowania1 = a.getzainteresowania();  

line 218 (part of searching method):

wyswietlwybrane(osoby); 

i need help, tried in many ways, nothing seem works.

i believe reason search query creating other list osoba list - need compare osoba id zainteresowania id_osoby, how , still able pass result list wyswietlwybrane method?

the reason running problem specifying 2 hibernate entities in section of query , default selecting every column of both tables since dont specify select.

this returning object[] of entity properties why getting cast exception.

to fix try explicitly select every named property of o entity want , should smart enough map o entities instead of object[].

also noticed not joining 2 tables together. give cartesian product believe. fix add join filter:

... osoba o inner join o.zainteresowania z fetch ... 

this limit z entities ones exist children in o.


Comments

Popular posts from this blog

c++ - No viable overloaded operator for references a map -

java - Custom OutputStreamAppender not run: LOGBACK: No context given for <MYAPPENDER> -

java - Cannot secure connection using TLS -