You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Nino Saturnino Martinez Vazquez Wael <ni...@jayway.dk> on 2008/04/01 14:10:21 UTC
JPQL query not working..?
Hi
Im a newcommer both to JPA and OpenJPA. I've used hibernate previously
as a provider, but found their error messages lacking a lot (almost
impossible to work with). OpenJPA are how it's supposed to be:) Now you
only need a criteria api like hibernates:)
However I have a JPQL query which doesnt seem to work as I want. In my
project I have a Person which haves some trainingSchemes, these
trainingSchemes has trainingSets and a trainingSet has a exercise. So I
want a query which returns only persons with a certain exercise, I've
tried it a dozen ways now. But the result are always the same I get all
Persons in the database(I actually got the same result in hibernate
using their criteria api) even though they do not have the exercise i
query for. Now heres my 2 latest tries:
* SELECT DISTINCT p FROM Person p, IN(p.trainingSchemes)
ts,IN(ts.trainingSets) tset, IN(tset.exercise) ex where ex.id IN
(someints)
* SELECT DISTINCT p FROM Person as p INNER JOIN p.trainingSchemes as
tscheme INNER JOIN tscheme.trainingSets as tset where
tset.exercise.id IN(someints)
Are there something visibly wrong with those queries? I have a couple of
other there are working just fine, but it seems as when I go deeper than
1 relation it does not work?
--
-Wicket for love
Nino Martinez Wael
Java Specialist @ Jayway DK
http://www.jayway.dk
+45 2936 7684
Re: JPQL query not working..?
Posted by Nino Saturnino Martinez Vazquez Wael <ni...@jayway.dk>.
Patrick Linskey wrote:
>> Im a newcommer both to JPA and OpenJPA. I've used hibernate previously
>> as a provider, but found their error messages lacking a lot (almost
>> impossible to work with). OpenJPA are how it's supposed to be:) Now you
>> only need a criteria api like hibernates:)
>>
>
> Have you looked at Quare [1]?
>
Yeah, but it's pre-beta.. But youre right it looks promising.
>
>> Are there something visibly wrong with those queries? I have a couple of
>> other there are working just fine, but it seems as when I go deeper than
>> 1 relation it does not work?
>>
>
> Can you post the generated SQL?
>
Here it are:
executing prepstmnt 12499224 SELECT DISTINCT t0.id, t0.version,
t0.address, t0.alias, t0.birthDate, t0.browser, t0.defaultExerciseType,
t0.email, t0.joined, t0.logins, t0.name, t0.password,
t0.payingUserUntilDate, t0.sexType, t0.userType, t0.validated FROM
PERSON t0 INNER JOIN PERSON_TrainingScheme t1 ON t0.id = t1.PERSON_id
INNER JOIN TrainingScheme t2 ON t1.trainingSchemes_id = t2.id INNER JOIN
TrainingSchemeAbstract t3 ON t2.id = t3.id INNER JOIN TrainingSet t4 ON
t3.id = t4.trainingScheme_id INNER JOIN Exercise t5 ON t4.exercise_id =
t5.id LIMIT ?, ? [params=(long) 0, (long) 40]
So this is the values that I put in, its the two parameters I guess.
search : where ex.id IN (73637,73639)
> -Patrick
>
> [1] http://quaere.codehaus.org/
>
> On Tue, Apr 1, 2008 at 5:10 AM, Nino Saturnino Martinez Vazquez Wael
> <ni...@jayway.dk> wrote:
>
>> Hi
>>
>> Im a newcommer both to JPA and OpenJPA. I've used hibernate previously
>> as a provider, but found their error messages lacking a lot (almost
>> impossible to work with). OpenJPA are how it's supposed to be:) Now you
>> only need a criteria api like hibernates:)
>>
>> However I have a JPQL query which doesnt seem to work as I want. In my
>> project I have a Person which haves some trainingSchemes, these
>> trainingSchemes has trainingSets and a trainingSet has a exercise. So I
>> want a query which returns only persons with a certain exercise, I've
>> tried it a dozen ways now. But the result are always the same I get all
>> Persons in the database(I actually got the same result in hibernate
>> using their criteria api) even though they do not have the exercise i
>> query for. Now heres my 2 latest tries:
>>
>>
>> * SELECT DISTINCT p FROM Person p, IN(p.trainingSchemes)
>> ts,IN(ts.trainingSets) tset, IN(tset.exercise) ex where ex.id IN
>> (someints)
>> * SELECT DISTINCT p FROM Person as p INNER JOIN p.trainingSchemes as
>> tscheme INNER JOIN tscheme.trainingSets as tset where
>> tset.exercise.id IN(someints)
>>
>> Are there something visibly wrong with those queries? I have a couple of
>> other there are working just fine, but it seems as when I go deeper than
>> 1 relation it does not work?
>>
>> --
>> -Wicket for love
>>
>> Nino Martinez Wael
>> Java Specialist @ Jayway DK
>> http://www.jayway.dk
>> +45 2936 7684
>>
>>
>>
>
>
>
>
--
-Wicket for love
Nino Martinez Wael
Java Specialist @ Jayway DK
http://www.jayway.dk
+45 2936 7684
Re: JPQL query not working..?
Posted by Patrick Linskey <pl...@gmail.com>.
> Im a newcommer both to JPA and OpenJPA. I've used hibernate previously
> as a provider, but found their error messages lacking a lot (almost
> impossible to work with). OpenJPA are how it's supposed to be:) Now you
> only need a criteria api like hibernates:)
Have you looked at Quare [1]?
> Are there something visibly wrong with those queries? I have a couple of
> other there are working just fine, but it seems as when I go deeper than
> 1 relation it does not work?
Can you post the generated SQL?
-Patrick
[1] http://quaere.codehaus.org/
On Tue, Apr 1, 2008 at 5:10 AM, Nino Saturnino Martinez Vazquez Wael
<ni...@jayway.dk> wrote:
> Hi
>
> Im a newcommer both to JPA and OpenJPA. I've used hibernate previously
> as a provider, but found their error messages lacking a lot (almost
> impossible to work with). OpenJPA are how it's supposed to be:) Now you
> only need a criteria api like hibernates:)
>
> However I have a JPQL query which doesnt seem to work as I want. In my
> project I have a Person which haves some trainingSchemes, these
> trainingSchemes has trainingSets and a trainingSet has a exercise. So I
> want a query which returns only persons with a certain exercise, I've
> tried it a dozen ways now. But the result are always the same I get all
> Persons in the database(I actually got the same result in hibernate
> using their criteria api) even though they do not have the exercise i
> query for. Now heres my 2 latest tries:
>
>
> * SELECT DISTINCT p FROM Person p, IN(p.trainingSchemes)
> ts,IN(ts.trainingSets) tset, IN(tset.exercise) ex where ex.id IN
> (someints)
> * SELECT DISTINCT p FROM Person as p INNER JOIN p.trainingSchemes as
> tscheme INNER JOIN tscheme.trainingSets as tset where
> tset.exercise.id IN(someints)
>
> Are there something visibly wrong with those queries? I have a couple of
> other there are working just fine, but it seems as when I go deeper than
> 1 relation it does not work?
>
> --
> -Wicket for love
>
> Nino Martinez Wael
> Java Specialist @ Jayway DK
> http://www.jayway.dk
> +45 2936 7684
>
>
--
Patrick Linskey
202 669 5907