Hello, the following query:
Query<RoleTimeCreditType> subQuery =
Ebean.find(RoleTimeCreditType.class);
subQuery.where()
.eq("roleTimeCredits.timeTrackingEntry.scheduledAssignment.scheduleDay.date",
cal.getTime())
.eq("
roleTimeCredits.timeTrackingEntry.scheduledAssignment.user.userType.id",
1);
produces this SQL:
select distinct r.roletimecredittypeid as c0,
r.name as c1, r.descr as
c2, r.printorder as c3
from public.roletimecredittypes r
join public.roletimecredits xr on xr.roletimecredittypeid =
r.roletimecredittypeid
join public.timetrackingentries xt on xt.timetrackingentryid =
xr.timetrackingentryid
join public.scheduledassignments xs on xs.scheduledassignmentid =
xt.scheduledassignmentid
join public.scheduledays xs on xs.scheduledayid = xs.scheduledayid
join public.roletimecredits rr on rr.roletimecredittypeid =
r.roletimecredittypeid
left outer join public.timetrackingentries rrt on
rrt.timetrackingentryid = rr.timetrackingentryid
left outer join public.scheduledassignments rrts on
rrts.scheduledassignmentid = rrt.scheduledassignmentid
left outer join public.users rrtsu on rrtsu.userid = rrts.userid
where xs.scheduledate = ? and rrtsu.usertypeid = ?
Notice the table alias "xs" is duplicated. It also seems the tables
roletimecredittypes and timetrackingentries are joined in twice,
perhaps once for each path being tested in the where clause? It seems
it could be more efficient. Also since I am requiring equality for the
usertypeid, the joins could be inner rather than left.
Could I be doing something wrong or is this a bug? Obviously the model
is fairly complex, but I could try to create a unit test if nothing
looks suspicious.
Thanks,
/Daryl