Perhaps you could try using the bar as the root of the query by
selecting the bar and joining the foo parent. If the foo id is a
simple foreign key in bar this might be the most efficient way to get
the data anyway.
Craig
On Feb 3, 2010, at 12:23 PM, KARR, DAVID (ATTCINW) wrote:
-----Original Message-----
From: Daryl Stultz [mailto:[email protected]]
Sent: Wednesday, February 03, 2010 12:00 PM
To: [email protected]
Subject: Re: JPQL to get association members, but only ones that
fulfill a condition
On Wed, Feb 3, 2010 at 2:12 PM, KARR, DAVID (ATTCINW)
<[email protected]>wrote:
So I changed my query to:
select foo from packagepath.Foo foo left join fetch foo.childBars as
bar
where foo.id=:id and current_date between bar.startDate and
bar.endDate
try this:
select distinct foo from packagepath.Foo foo
left join foo.childBars as bar
left join fetch foo.childBars
where foo.id=:id
and current_date between bar.startDate and bar.endDate
Notice "distinct". You might find it works without out it bug a bug
will
bite you later...
I'm not sure if you are expecting to get a subset of foo.childBars.
If
you
are, this won't work.
I don't understand the last statement here.
When I tried this strategy, it resulted in no rows returned, and I
know
that there's at least one "bar" with a current date range, but I know
there are several that do not. I tried both with and without
"distinct", with the same result.
I have a feeling I'm heading towards having to construct a specific
query for the bars that are child of this foo and are in the date
range.
Craig L Russell
Architect, Sun Java Enterprise System http://db.apache.org/jdo
408 276-5638 mailto:[email protected]
P.S. A good JDO? O, Gasp!