You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Gul Onural <on...@nortel.com> on 2008/04/11 06:55:54 UTC
JPQL query on joined tables
EntityA has a 1-1 relationship to EntityB. The EntityB has a array list
of EntityCs, so Entity B has a 1-to-many relationship to EntityC.
Let say EntityA is employee. EntityB is the personal data record of the
employee. EntityC is the phone numbers of the employee.
One employee can have only one personal record but can have multiple
phone numbers. An employee's personal record has 1-to-many
relationship to phone numbers.
What I am trying to do with JPQL is to query uniqueID of the employee
(which is defined in EntityA) by giving one of his phone numbers.
In database terms, this is a join of all three tables, but I am not sure
how can you write such a query in JPQL.
Is it possible to write queries operating on joins in JPQL ?
Gul
Re: JPQL query on joined tables
Posted by Michael Bouschen <mb...@spree.de>.
Hi Gul,
I'm assuming three entity classes: Employee, PersonalRecord and
PhoneNumber with
- Employee having a field personalRecord which is a OneToOne
relationship to PersonalRecord
- PersonalRecord having a collection field called phoneNumbers which is
a OneToMany relationship to PhoneNumber
Then the following query might do the job:
SELECT e FROM Employee e JOIN e.personalRecord r JOIN r.phoneNumbers p
WHERE p.number = :number
Regards Michael
> EntityA has a 1-1 relationship to EntityB. The EntityB has a array list
> of EntityCs, so Entity B has a 1-to-many relationship to EntityC.
>
> Let say EntityA is employee. EntityB is the personal data record of the
> employee. EntityC is the phone numbers of the employee.
>
> One employee can have only one personal record but can have multiple
> phone numbers. An employee's personal record has 1-to-many
> relationship to phone numbers.
>
> What I am trying to do with JPQL is to query uniqueID of the employee
> (which is defined in EntityA) by giving one of his phone numbers.
>
> In database terms, this is a join of all three tables, but I am not sure
> how can you write such a query in JPQL.
>
> Is it possible to write queries operating on joins in JPQL ?
>
> Gul
>
>
--
*Michael Bouschen*
*Prokurist*
akquinet tech@spree GmbH
Tempelhofer Ufer 23-24, D-10963 Berlin
Bülowstr. 66, D-10783 Berlin
Fon: +49 30 235 520-33
Fax: +49 30 217 520-12
Email: michael.bouschen@akquinet.de
Url: www.akquinet.de <http://www.akquinet.de>
akquinet tech@spree GmbH, Berlin
Geschäftsführung: Prof. Dr. Christian Roth, Hendrik Saly, Martin Weber
Amtsgericht Berlin-Charlottenburg HRB 86780
USt.-Id. Nr.: DE 225 964 680