Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] JPQL + JOIN + SELECT IN

Assuming I have a->b->c,  I want to find all the jobs that either depend on
b(in this case c) or release b(in this case a)
IN the job table I will have 
a
b
c
In the dependency table I will have 
a b
b c

The IN select is the filter for the set of jobs I want to solve the
dependencies for.
I tried both suggestions , to narrow down, it didn't work.


tware wrote:
> 
> In this expression:
> 
> (job.nameId=dep.targetNameId)
> 
> What is the goal.  Are you trying to limit the results to jobs that
> successfully 
> join to the table for dep?
> 
> There may be a bug here:
> 
> Some things you could try to narrow it down:
> 
> - see the the query runs without the last part:  and
> (job.nameId=dep.targetNameId)
> - reorder to put (job.nameId=dep.targetNameId) before the subquery
> 
> 
> Assume there is a bug, you may be able to work around it by Mapping a 
> relationship from job to dep and making it LAZY?  That way it will not be 
> retrieved unless you want it to be and it will be easy to build queries?
> 
> AnaTatavu wrote:
>> Job and Dependency tables don't have the foreign key set.
>> The dependeby table has 2 fields I am intrested in source_job_id and
>> target_job_id
>> I don't want to set the foreign key constraints for performance reasons,
>> this is failry rare operation.
>> 
>> tware wrote:
>>> What are you trying to actually do?  I see "dep" only referenced at the
>>> end - 
>>> which seems to me to be trying to do some kind of cartesian product.  Do
>>> you 
>>> really mean something like:
>>>
>>> Select Object(job) FROM EntityJob job JOIN job.dependency dep.......
>>>
>>> -Tom
>>>
>>> AnaTatavu wrote:
>>>>  
>>>> I am trying to issue the next JPQL query:
>>>> SELECT Object(job) FROM EntityJob job, Dependency dep WHERE (job
>>>> IN(SELECT
>>>> Object(j) FROM EntityJob j where j.jobName = 'TG_HTTP_JOB1')) and
>>>> (job.nameId=dep.targetNameId)
>>>>
>>>>
>>>> Exception Description: Syntax error parsing the query [
>>>> SELECT Object(job) FROM EntityJob job, Dependency dep WHERE (job
>>>> IN(SELECT
>>>> Object(j) FROM EntityJob j where j.jobName = 'TG_HTTP_JOB1')) and
>>>> (job.nameId=dep.targetNameId)], line 1, column 62: unexpected token
>>>> [(].
>>>> Internal Exception: NoViableAltException(69!=[593:1: conditionalPrimary
>>>> returns [Object node] : ( ( LEFT_ROUND_BRACKET conditionalExpression
>>>> )=>
>>>> LEFT_ROUND_BRACKET n= conditionalExpression RIGHT_ROUND_BRACKET | n=
>>>> simpleConditionalExpression );])
>>>> at
>>>> org.eclipse.persistence.exceptions.JPQLException.unexpectedToken(JPQLException.java:365)
>>>>
>>>>
>>>> I tried to remove the ( and I got a different exception.
>>>>
>>> _______________________________________________
>>> eclipselink-users mailing list
>>> eclipselink-users@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>
>>>
>> 
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> 
> 

-- 
View this message in context: http://www.nabble.com/JPQL-%2B-JOIN-%2B-SELECT-IN-tp22355819p22360167.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top