Hi Christian
Since the selected columns are all that’s required for ObjEntityE and
there’s a simple relationship between ObjEntityE and ObjEntityA we
should
be able to just get ObjEntityE directly:
List<ObjEntityE> results = ObjectSelect.query( ObjEntityE.class )
.where( ObjEntityE.PROP_FOR_OBJ_A
.dot( ObjEntityA.PROP_FOR_OBJ_B )
.dot( ObjEntityB.PROP_FOR_OBJ_C )
.dot( ObjEntityC.PROP_FOR_OBJ_D )
.dot( ObjEntityD.PROP_B )
.eq( "somevalue" ) )
.select( context );
Regards
Jurgen
From: Christian Gonzalez
Sent: Tuesday, 30 January 2024 18:22
To: user@cayenne.apache.org
Subject: Re: Complicated SQL queries
Sorry for the late follow up, but this query did return the rows I
wanted
using purely cayenne expressions and object select rather than creating
a
new objEntity in the model. My last question is if there is any fast
way to
convert the returned Array Objects into the ObjEntity class for
ObjectEntityA. The three rows should be the only properties in the
class so
I was wondering if there was a faster way to automatically convert them
rather than having to create a new Object using objectContext.newObject
and
manually setting the values.
On Mon, Jan 22, 2024 at 12:19 AM Jurgen Doll <jur...@ivoryemr.co.za>
wrote:
> Ahh, my bad again - I missed the whole point of using ObjectSelect
> somehow, probably because it's difficult to explain without having
your
> model. Anyways here's a shot at it, conceptually the same as what you
did
> in the modeller:
>
> List<Object[]> results = ObjectSelect.query( ObjEntityA.class )
> .columns( ObjEntityA.PROP_FOR_OBJ_E.dot( ObjEntityE.PROP_A ),
> ObjEntityA.PROP_FOR_OBJ_E.dot( ObjEntityE.PROP_B
),
> ObjEntityA.PROP_FOR_OBJ_E.dot( ObjEntityE.PROP_C
) )
> .where( ObjEntityA.PROP_FOR_OBJ_B.dot( ObjEntityB.PROP_FOR_OBJ_C
).dot(
> ObjEntityC.PROP_FOR_OBJ_D )
> .dot( ObjEntityD.PROP_B ) // this is t3.varB
> .eq( "somevalue" ) )
> .select( context );
>
>
>
> On Fri, 19 Jan 2024 22:45:24 +0200, Christian Gonzalez
> <christian.gonza...@smartscrubs.com> wrote:
>
> > Looks like it worked, thank you. It is definitely an interesting
way of
> > doing it although I'm not sure about how I feel about having to
make a
> > new
> > entity every time a query like this is used but hopefully it won't
be
too
> > often.
> >
> > Thank you for your help.
> >
> >
> > On Wed, Jan 17, 2024 at 11:08 AM Jurgen Doll <jur...@ivoryemr.co.za>
> > wrote:
> >
> >> Ahh, sorry my bad I didn't see the t0 for tableE.
> >>
> >> There may be other ways to do it but I think adding t3.varB as an
> >> attribute to the object entity might be the simplest.
> >>
> >> Regards
> >> Jurgen
>