-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Eine Frage von HQL
PostPosted: Tue Jul 11, 2006 2:06 am 
Newbie

Joined: Mon Jul 10, 2006 9:20 am
Posts: 1
Ich habe zwei Klassen: class Person und class Adress. SIe sehen wie folgend aus:

public Class Person
{
private Adress ad;
...
public void setAdress(Adress ad){
this.ad = ad
}

public Adress getAdress(){
return ad;
}
...
}

public Class Adress
{
String postcode;
String street;
...
public void setPostcode(String postcode){
...
}
public String getPostcode(){
...
}
...
}

Ich habe zwei Tabelen für die Klassen erstellt. Jede hat automatisch ein Id, nämlich person_id und adress_id. Die Spalte "Adress" von Tabele "Person" enthält die adress_id, damit die Zusammenhang erstellt.

Wenn ich mit normale SQL die Adresse abhole, schreibe ich so:
select distinct(*) from person p, adress a
where p.adress = a.adress_id
and a.street = 'mystreet';

Aber HQL greift nicht die Spalte sonder nur die Member einer Klasse. D.h. HQL kennt die a.adress_id nicht.

Meine Frage: wie schreibt man in diesem Fall ein HQL-Script?


Top
 Profile  
 
 Post subject: HQL
PostPosted: Sat Aug 05, 2006 3:40 am 
Newbie

Joined: Fri Aug 04, 2006 9:46 am
Posts: 3
Hallo,

HQL arbeitet, wie du schon richtig erkannt hast mit Objekten. In deinem Person-Objekt hast du ja nun ein Adress-Objekt. Auf das musst du dich bei der Abfrage beziehen. Probier mal

.... WHERE a.address_id = p.ad.address_id


Top
 Profile  
 
 Post subject: Re: HQL
PostPosted: Sat Aug 05, 2006 4:54 am 
Beginner
Beginner

Joined: Thu Jul 20, 2006 12:08 pm
Posts: 21
Location: Germany
tikki wrote:
Hallo,

HQL arbeitet, wie du schon richtig erkannt hast mit Objekten. In deinem Person-Objekt hast du ja nun ein Adress-Objekt. Auf das musst du dich bei der Abfrage beziehen. Probier mal

.... WHERE a.address_id = p.ad.address_id



Hallo,

willst Du direkt mit HQL auf die Adresse zugreifen ?
Ansonsten kannst Du Dir doch einfach die Person holen und dann über getAdress() auf die Adresse zugreifen, so ersparst Du Dir den Join in der Abfrage.

grüße

marlon

_________________
marlon
---
don't hesitate to rate.


Top
 Profile  
 
 Post subject:
PostPosted: Sat Aug 05, 2006 6:41 am 
Beginner
Beginner

Joined: Fri May 19, 2006 11:34 am
Posts: 29
Marlon hat eigentlich schon die richtige Richtung vorgegeben. Allerdings kann er so natürlich nicht im Vorfeld nach bestimmten Strassen filtern.

Deshalb noch das richtige HQL-Script.

session.createQuery("select p.address from Person p where p.address.street = 'mystreet'").list();

Rückgabewert wird eine Collection von Adressen sein.

Viele Grüsse
Kai


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.