Avatar billede casualty Nybegynder
16. februar 2005 - 09:54 Der er 1 kommentar og
1 løsning

Hjælp til hibernate query

Jeg har følgende klasser:

----------------------
Class Customer
- int customerId
- Set departments
----------------------
Class Department
- int departmentId
- Set operators
----------------------
Class Operator(extends user)
- int userId
- Set departments
----------------------

Altså en kunde kan have mange afdelinger.
En afdeling kan have mange operatører.
En operatør kan høre til mange afdelinger.

Jeg benytter Hibernate ovenpå en mySql database.
Databasen understøtter ikke subqueries/subselects.

Jeg ville gerne med HQL kunne lave en query der henter Customers på baggrund af et operatorId.

Det vil sige jeg har metoden:
"searchCustomerByOperatorId(long operatorId)"

Som skal:
Finde de kunder der har en operatør med id(x) i en af sine afdelinger...

Er der nogen der kan hjælpe mig med dette? Jeg har virkelig svært ved at realisere ovenstående i hibernates querylanguage

Mvh Casualty
Avatar billede simonvalter Praktikant
16. februar 2005 - 11:32 #1
Tror du skal hen i retning af

from Customer as cust join cust.departments as depart join depart.operators as oper where oper.id = 123
Avatar billede casualty Nybegynder
16. februar 2005 - 12:04 #2
Hej jeg fandt løsningen således:

SELECT customer FROM Customer customer, Department department, Operator operator WHERE operator.userId="+operatorId+" AND operator = any elements(department.operators) and department = any elements(customer.departments)

Mvh Casualty

simonvalter>> Tak men jeg fandt en løsning uden brug af join :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester