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