Actually, I solved it already in another way, but now I want to use joins
in EJBQL which depend on a discriminator column, e.g.

*Table "ISSUE"*
issueNumber : varchar
referenceNumber : varchar
referenceType : varchar

*Table "ORDER"*
orderNumber : varchar

Orders can have multiple issues by using its *orderNumber* as a
*referenceNumber* and *referenceType = "ORDER"* in the ISSUE table.
I don't think this is possible at the moment with EJBQL, right?

Mark


On Sat, Nov 1, 2014 at 3:44 PM, Mark Stobbe <[email protected]> wrote:

> Thank you Andrus!
> I managed to get most of it into the existing framework. One quick
> question, is it possible to use aliases for fields in the EJBQL query, e.g.:
>
> *SELECT *o, *COUNT*(p) *AS *numberOfPackages
> *FROM *Order o *JOIN *o.packages p
> *WHERE *...
> *GROUP BY *s
>
> This would help greatly when getting the metadata of the query, because
> above gives an exception and if I leave it out it just gives generated
> names:
>
> *QueryMetadata *metaData = query.getMetaData(oc.getEntityResolver());
> *List*<*Object*> mapping = metaData.getResultSetMapping();
> *for *(*int *i = 1; i < mapping.size(); i++)
> {
>   *ScalarResultSegment *segment = (*ScalarResultSegment*) mapping.get(i);
>   System.out.println(segment.getColumn());
> }
>
> Mark
>
>
> On Fri, Oct 31, 2014 at 9:50 AM, Andrus Adamchik <[email protected]>
> wrote:
>
>> > My problem with the solution is just the integration into Cayenne.
>>
>> EJBQLQuery supports aggregates:
>>
>> http://cayenne.apache.org/docs/3.1/cayenne-guide/queries.html#ejbqlquery
>>
>> The problem with it is that the query itself can only be created from
>> String using a JPQL-like object query language, so you forfeit the type
>> safety of SelectQuery. Still it is a much better abstraction then
>> SQLTemplate for instance. (And its integration into SelectQuery is on the
>> agenda).
>>
>> Andrus
>>
>>
>> > On Oct 31, 2014, at 1:38 AM, Mark Stobbe <[email protected]>
>> wrote:
>> >
>> > @Andrus, I see. Good to know how to do this in Cayenne.
>> >
>> > @Michael, You are right. It makes more sense to let the database do the
>> calculations. It prevents the race conditions when updating and ensures
>> totals to be correct.
>> > My problem with the solution is just the integration into Cayenne.
>> > Do you use some extra classes to keep the totals? It would be perfect
>> if the expression language could be extended to have an easy way to group
>> and count associated entities!!
>> >
>> >
>> >> On 30 okt. 2014, at 18:22, Michael Gentry <[email protected]>
>> wrote:
>> >>
>> >> The utilities I mentioned also do SUM, AVG, MIN, and MAX ...
>> >>
>> >>
>> >>> On Thu, Oct 30, 2014 at 12:35 PM, Mark Stobbe <[email protected]>
>> wrote:
>> >>> Oh, I also have the same problem with total cost with different
>> >>> currencies...
>> >>>
>> >>>> On Thu, Oct 30, 2014 at 5:09 PM, Mark Stobbe <[email protected]>
>> wrote:
>> >>>>
>> >>>> Hi Michael,
>> >>>>
>> >>>> I would like to display the count in a table for a whole bunch of
>> orders.
>> >>>> In theory I could use a "group by"-query to get the numbers I need
>> and
>> >>>> with proper configured indices this should be fairly quick, I guess.
>> >>>>
>> >>>> Is there a more transparent way of doing things, e.g. using lifecycle
>> >>>> listeners, datachannel filters and such?
>> >>>>
>> >>>> Mark
>> >>>>
>> >>>> On Thu, Oct 30, 2014 at 4:15 PM, Michael Gentry <
>> [email protected]>
>> >>>> wrote:
>> >>>>
>> >>>>> Hi Mark,
>> >>>>>
>> >>>>> Is there a performance reason why you don't just do a count on the
>> >>>>> packages that match the order?
>> >>>>>
>> >>>>> mrg
>> >>>>>
>> >>>>>
>> >>>>> On Thu, Oct 30, 2014 at 11:00 AM, Mark Stobbe <
>> [email protected]>
>> >>>>> wrote:
>> >>>>>> Hi all,
>> >>>>>>
>> >>>>>> I was wondering what is the best way to update totals in a
>> multi-user
>> >>>>>> environment. For example, let's say we have an Order which can
>> have one
>> >>>>> or
>> >>>>>> more Packages associated and we want to maintain a total package
>> count
>> >>>>> on
>> >>>>>> the Order entity. How would you update this value when the user
>> has the
>> >>>>>> option to add/remove packages.
>> >>>>>>
>> >>>>>> So the entities looks like:
>> >>>>>>
>> >>>>>> *Order*
>> >>>>>> --------
>> >>>>>> id : bigint
>> >>>>>> orderNumber : varchar
>> >>>>>> nrOfPackages : int
>> >>>>>>
>> >>>>>> *Package*
>> >>>>>> ------------
>> >>>>>> id : bigint
>> >>>>>> packageNumber : varchar
>> >>>>>> *fk_order : bigint*
>> >>>>>>
>> >>>>>> What do you guys use to solve this?
>> >>>>>> Mark
>> >>>>
>> >>>>
>> >
>>
>>
>

Reply via email to