[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
Re: [eclipselink-users] using IN with a subquery
 | 
Hi Derek,
  What version of EclipseLink are you using?
  How are your entities mapped? (particularly the mappings that relate them)
-Tom
Derek Knapp wrote:
I have 3 entities, User, Account, and Task
this is my query
select t from Task t where t.user = :user or t.account in (select a from 
User u join u.accounts a where u = :user)
here is the SQL generated
SELECT t0.`id`, t0.`complete_date`, t0.`create_date`, t0.`due_date`, 
t0.`task_status`, t0.`uuid`, t0.`userid`, t0.`contactid`, t0.`noteid`, 
t0.`subuserid` FROM `task` t0, `users` t1 WHERE (((t0.`subuserid` = ?) 
OR  IN (SELECT DISTINCT t2.`userid`, t2.`adminlevel`, t2.`cellno`, 
t2.`city`, t2.`cityid`, t2.`country`, t2.`disclaimer`, t2.`email`, 
t2.`firstname`, t2.`lastname`, t2.`managerid`, t2.`office`, 
t2.`officeid`, t2.`password`, t2.`phoneno`, t2.`region`, t2.`regionid`, 
t2.`signatureline`, t2.`signaturestatus`, t2.`team`, t2.`teamid`, 
t2.`title`, t2.`companyid` FROM `subuseraccess` t4, `subusers` t3, 
`users` t2 WHERE ((? = t3.`subuserid`) AND ((t4.`subuserid` = 
t3.`subuserid`) AND (t2.`userid` = t4.`userid`))))) AND (t1.`userid` = 
t0.`userid`))
    bind => [6, 6]
the JPA query seems to be fine, but the SQL it generates is not.. here 
is the mysql error
You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near 'IN 
(SELECT DISTINCT t2.`userid`, t2.`adminlevel`, t2.`cellno`, t2.`city`, 
t2.`ci' at line 1
also, why does it include the users table (t1)..  this is what I would 
HOPE it generated
SELECT t0.`id`, t0.`complete_date`, t0.`create_date`, t0.`due_date`, 
t0.`task_status`, t0.`uuid`, t0.`userid`, t0.`contactid`, t0.`noteid`, 
t0.`subuserid` FROM `task` t0 WHERE (((t0.`subuserid` = 6) OR 
t0.`userid` IN (SELECT DISTINCT t2.`userid` FROM `subuseraccess` t4, 
`subusers` t3, `users` t2 WHERE ((6 = t3.`subuserid`) AND 
((t4.`subuserid` = t3.`subuserid`) AND (t2.`userid` = t4.`userid`))))))
    bind => [6, 6]
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users