Here is latest version that already committed and can be tested: ObjectSelect .columnQuery(Artist.class, Property.createSelf(Artist.class), // query root Artist.PAINTING_ARRAY.dot(Painting.GALLERY), // toOne relationship Artist.PAINTING_ARRAY.flat(Painting.class)) // flattened toMany relationship .select(context);
On Thu, Mar 16, 2017 at 11:48 AM, Andrus Adamchik <and...@objectstyle.org> wrote: > > >> On Mar 16, 2017, at 11:14 AM, Nikita Timofeev <ntimof...@objectstyle.com> >> wrote: >> >> On Mon, Mar 13, 2017 at 3:05 PM, Aristedes Maniatis <a...@maniatis.org> >> wrote: >>> On 13/3/17 9:53pm, Andrus Adamchik wrote: >>>> >>>>> On Mar 13, 2017, at 1:46 PM, Aristedes Maniatis <a...@maniatis.org> wrote: >>>>> >>>>> >>>>> Just a wild thought, but would this syntax be helpful... >>>>> >>>>> List<Object[]> result = ObjectSelect.query(Artist.class) >>>>> .addColumns(Artist.PAINTING_COUNT) >>>>> .select(context); >>>>> >>>>> So then we are adding more columns to the existing DataObject query >>>>> rather than having to define the DataObjects as properties in themselves. >>>>> The syntax above might be simpler to understand and write. >>>> >>>> So "addColumns" vs "columns"? IIRC we tried something similar with >>>> orderings (override all orderings vs add to the existing orderings), and >>>> that confused everybody (including me as the author), so that was undone >>>> between the milestones. >>> >>> >>> Except in this case it is very different result since with this syntax you >>> get the mixed columns/DataObject results and avoid needing to create >>> properties for 'self' or some other confusing construct. >>> >> >> I think we can add Property<EntityType> SELF to default cgen >> templates, then everything will be pretty simple: >> >> ObjectSelect >> .columnQuery(Artist.class, Artist.SELF, Artist.PAINTING_ARRAY.count()) >> .select(context); >> > > A good idea except for a possible naming conflict if a Java object has a > persistent property called "self". > > Andrus -- Best regards, Nikita Timofeev