Named Query Join

TheTobi

Aktives Mitglied
Ich habe eine Klasse Topic, diese hat eine ManyToOne beziehung zu Category, ich möchte nun mit einem NamedQuery alle Topics mit der category_id 1 bekommen

SELECT t FROM Topic t where t.category_id = :categoryId"

das funktioniert nicht, da Topic category_id nicht kennt sondern dieses Attribut wird wegen der ManyToOne beziehung generiert.

Beziehung in der Topic Klasse
@ManyToOne
private Category category;

Fehler:
could not resolve property: category_id
 

musiKk

Top Contributor
[c]SELECT t FROM Topic t where t.category.id = :categoryId[/c] falls die [c]@Id[/c] in der Klasse [c]Category[/c] auch [c]id[/c] heißt. Ansonsten entsprechend anpassen.
 

TheTobi

Aktives Mitglied
Hi,

hmm nee ich will noch was anderes, ich habe in der Topic Tabelle schon die Spalte category_id, die wurde wegen der ManyToOne Annotation erzeugt. Ich habe nun eine Category.id und möchte alle dazugehörigen Topics ausgeben. Also will ich praktisch das machen

select * from Topic t where t.category_id = 1

dann sollte ich alle Topics bekommen die als category_id eine 1 haben. Allerdings kann ich auf category_id nicht zugreifen oder er kennt die Spalte nicht.....
 

musiKk

Top Contributor
Du greifst per JPQL auch nicht auf Spalten und Tabellen, sondern auf Attribute und Objekte zu. Darum musst Du das Query so formulieren, dass Du den Objektbaum durchläufst um die gewünschten Informationen zu finden.

Falls mein Vorschlag nicht funktioniert (mein JPA ist etwas eingerostet), kann es sein, dass noch ein Join von Nöten ist:

[c]SELECT t FROM Topic t JOIN t.category c WHERE c.id = :categoryId[/c] oder
[c]SELECT t FROM Topic t, IN(t.category) c WHERE c.id = :categoryId[/c]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T [Hibernate] Named query not found Data Tier 8
A No Persistence provider for EntityManager named Data Tier 4
K No Persistence provider for EntityManager named Data Tier 4
T [Hibernate] could not locate named parameter Data Tier 1
ARadauer Hibernate Query der Kindelemente, wie bidirektionale Verbindung vermeiden Data Tier 0
E JPA Hibernate Query mit Timestamp hat seltsames Verhalten Data Tier 1
T JPA Query - Verbesserungsvorschlag Data Tier 5
M JPA Query: Kann ich Objekte einer Oberklasse über Objekte der Unterklassen abfragen? Data Tier 5
M JPA 2.0: Query mit der Criteria API: Wie case-insensitive machen? Data Tier 1
G JPA 2.0 Query Problem Data Tier 3
byte Hibernate: Query Cache und Assoziationen Data Tier 10
GilbertGrape Probleme mit einem Query (left join) Data Tier 2
M JPA - Query.setFirstResult, Query.setMaxResults - intern? Data Tier 10
S JPA Self-Join gegen große Tabelle bricht irgendwann ab Data Tier 7
I JPA JOIN on JOIN Data Tier 0
N JPA JOIN mit JPQL schlägt fehl/ Einfaches Beispiel gesucht Data Tier 0
P Hibernate Mapping - Nur eine Spalte per Join aus anderer Tabelle holen Data Tier 5
J JOIN in CriteriaQuery Data Tier 4
LadyMilka (Hibernate) in Criteria implizierter Join durch Subquery's Data Tier 8
A Join-Queries über mehrere Entities Data Tier 3
D Hibernate - LEFT JOIN vs. JOIN Data Tier 2
D OneToMany ohne Join Table Data Tier 3
GilbertGrape Hibernate: Join vermeiden Data Tier 12
G Hibernateabfrage mit left join Data Tier 3
pusteblume inner join Data Tier 3
GilbertGrape Hibernate: Join auf Subquery? Data Tier 7
ilumin [Hibernate] Intelligenter Hibernate Join Data Tier 15

Ähnliche Java Themen

Neue Themen


Oben