The query I'd like to perform is something like:

SELECT p.*, t.* FROM Person p
LEFT JOIN PersonTemplate pt ON p.id = pt.personId
LEFT JOIN Template t ON pt.templateId = t.id

With this query, I can get Persons even if they don't have a Template.

On Fri, Jan 22, 2016 at 3:05 AM, Andy Jefferson <[email protected]>
wrote:

> > Person
> > - String name
> >
> > Template
> > - String name
> > - String field1
> > - boolean otherBunchOfProperties
> >
> > PersonTemplate
> > - Person person
> > - Template template
>
> > I want to query all Persons along with their corresponding Template
> > through PersonTemplate.
> > Adding the Template property to Person is not an option. At the moment,
> > we resorted to generating a query per Person to check PersonTemplate
> > just for prototyping purposes.. but we really have to fix this soon.
>
> No idea why you'd contemplate JPQL, it is way less flexible than JDOQL,
> and always better to stick to Java syntax in Java code IMHO.
>
> You don't define the precise query wanted, but suggest that you start from
>
> SELECT FROM mydomain.Person WHERE tmpl.person == this
> VARIABLES mydomain.PersonTemplate tmpl
>
> so you can then refer to your associated PersonTemplate object and its
> "template" field via "tmpl.template", and impose further constraints in the
> WHERE clause.
>
> Should this generate SQL with a different JOIN type to what you would
> prefer then you can specify the join for the variable as per this page
>
>
> http://www.datanucleus.org/products/accessplatform_4_2/datastores/rdbms_query.html
>
> Look for *datanucleus.query.jdoql.{varName}.join* on this page
>
>
>
> Regards
> --
> Andy
> DataNucleus (Web: http://www.datanucleus.org   Twitter: @datanucleus)
>

Reply via email to