MasterDrive.it   
Vai indietro   MasterDrive.it > Software Development > Java



Rispondi
 
Strumenti della discussione Modalità di visualizzazione
Vecchio 30-01-2010, 00:45   #1 (permalink)
Nuovo della community

 
26 Messaggi

stefy81 novizio della comunita' ( + 10 )
java - hibernate problemi con hql

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
codice:
<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>
mapping dell'autore
codice:
<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>
poi ci sono i bean di cui posto soltanto i membri
bean libro
codice:
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();
bean autore
codice:
private int m_id;
	private String m_nome;
	private String m_cognome;
	private Set m_libro = 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.
query eseguita
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

stefy81 non è in linea   Bookmark and Share Rispondi quotando
Vecchio 31-01-2010, 20:58   #2 (permalink)
Nuovo della community

 
26 Messaggi

stefy81 novizio della comunita' ( + 10 )
soluzione
String queryString = "select l from Libro l left join l.autore a where a.nome = :nome order by a.nome";
Query query = m_session.createQuery(queryString);
stefy81 non è in linea   Bookmark and Share Rispondi quotando
Rispondi

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are disattivato

Salto del forum


Tutti gli orari sono GMT +2. Attualmente sono le 09:46.


Powered by vBulletin versione 3.8.0
Copyright © 2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Valid XHTML 1.0 Transitional  Creative Commons License

Eccetto dove diversamente specificato, i contenuti pubblicati in questa comunità sono rilasciati sotto Licenza
Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
La comunita' di MasterDrive.it non e' responsabile di eventuali imprecisioni presenti nelle pagine.