Buonasera, spero di aver inserito la discussione nel posto giusto. Dato che la mia domanda è su hql.
Ho da poco iniziato a studiare hibernate e ora mi sono scontrata con l'hql che mi sta dando parecchi problemi. Ora sto tentando si eseguire una select e delle join.
Le tabelle coinvolte nella query sono 3. La tabella libro, autore e libro_autore.
autore[id_autore,nome,cognome]
libro[id_libro,titolo,isbn]
libro_autore[id_autore,id_libro]
mapping del libro
mapping dell'autorecodice:<hibernate-mapping schema="libreria" package="stefania.dto"> <class name="Libro" table="libro" lazy="false"> <id name="id" column="id_libro"> <generator class="native"/> </id> <property name="titolo"/> <property name="isbn"/> <set name="autore" table="autore_libro" lazy="false"> <key column="id_libro" /> <many-to-many column="id_autore" class="Autore" /> </set> <set name="genere" table="genere_libro" lazy="false"> <key column="id_libro" /> <many-to-many column="id_genere" class="Genere" /> </set> <set name="posizione" table="posizione_libro" lazy="false"> <key column="id_libro" /> <many-to-many column="id_posizione" class="Posizione" /> </set> </class> </hibernate-mapping>
poi ci sono i bean di cui posto soltanto i membricodice:<hibernate-mapping schema="libreria" package="stefania.dto"> <class name="Autore" table="autore" lazy="false"> <id name="id" column="id_autore"> <generator class="native"/> </id> <property name="nome"/> <property name="cognome"/> </class> </hibernate-mapping>
bean libro
bean autorecodice:private int m_id; private String m_titolo; private String m_isbn; private Set m_autore = new HashSet(); private Set m_genere = new HashSet(); private Set m_posizione = new HashSet();
ora devo eseguire una query che dato il nome dell'autore mi venga restituita una lsta di libri che abbiano quell'autore.Quindi devo fare una join, ma mentre con lsql riuscirei a farlo con l'hql è un problema, perchè la quey dovebbe restituirmi 3 libri invece me ne restituisce 9.codice:private int m_id; private String m_nome; private String m_cognome; private Set m_libro = new HashSet();
query eseguita
Non riesco a capire cosa fare.codice:m_session= getSessionFactory().openSession(); Query query = m_session.createQuery("from Libro l, Autore a where a.nome = :nome"); query.setString("nome", p_nomeAutore); List<Libro> listaLibri = query.list(); getSessionFactory().close(); return listaLibri;
Grazie ciao Stefania

Rispondi quotando