Einfache hql namens Abfrage mit einem inner-join
Möchte ich so etwas in meiner Domäne/entity-Objekt :
@Entity
@NamedQueries({
@NamedQuery(name="favouriteCats", query="from Cat c inner join on UserCat uc where uc.isFavourtie = true and uc.user = :user")
})
public final class Cat extends BaseTable
So, in meinem service-layer kann ich dies tun :
Query query = session.getNamedQuery("favouriteCats")
query.setParameter(0, MyUser);
return query.list();
Aber, meine syntax in HQL ist falsch - und nachm zehn Minuten suchen an den offiziellen docs habe ich beschlossen, aufzugeben und hier Fragen ... ?
Meine usercat Tabelle verknüpft wird, etwa so :
@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name="cat_fk", insertable=false, updatable=false)
private cat
Sql ist dies, funktioniert es auf meinem db-Eingabeaufforderung:
select c.*
from cat as c inner join usercat as uc on c.id = uc.cat_fk
and uc.isFavourite = 1 //bit field
and uc.user_fk = 74 //just user id
Ist es nur mich oder ist der hibernate-Dokumentation eher schmerzhaft, und finden Sie sich oft gefragt, ob es wäre schneller, nur um zu schreiben normalen jdbc vorbereitete Anweisungen, füllen Sie Ihre pojos/domain-Objekte/dto... ?
Was versuchen Sie zu erreichen, die von dieser Abfrage?
Übergeben Sie die Benutzer-id, suchen von allen Favoriten, die Katzen auf usercat Tabelle, die verbunden ist, auf die cat-Tabelle
Warum nicht direkt mit SQL anstelle von HQL, ist die Methode session.createSQLQuery(query);
Nun ja, ich denke, ich könnte, aber es gibt Vorteile zum haben eine benannte Abfrage oder ein Kriterium Abfragen. Und das sollte nicht sein, , schwierig mit hibernate.
Übergeben Sie die Benutzer-id, suchen von allen Favoriten, die Katzen auf usercat Tabelle, die verbunden ist, auf die cat-Tabelle
Warum nicht direkt mit SQL anstelle von HQL, ist die Methode session.createSQLQuery(query);
Nun ja, ich denke, ich könnte, aber es gibt Vorteile zum haben eine benannte Abfrage oder ein Kriterium Abfragen. Und das sollte nicht sein, , schwierig mit hibernate.
InformationsquelleAutor NimChimpsky | 2011-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das könnte für Sie arbeiten, aber ich nehme an, Ihr Usercat Klasse hier:
Ich bin mir nicht bewusst, wenn Sie können es tun, mit Kriterien ohne Bezug von Katze zu Usercat.
es scheint nicht, keine Antworten hier stackoverflow.com/q/7914607/106261 ich Frage mich manchmal, whther hibernate ist es Wert (wobei es das lernen neuer syntax, die Installation einer Last von Gläser, etc etc)
InformationsquelleAutor col
Fall, Problem, Rechts-Abfrage wäre:
Hinweis : der C-Cat ist das Kapital, U in Usercat ist Hauptstadt, wo als c in Usercat klein ist und f in isfavourite klein ist.
InformationsquelleAutor coding_idiot