cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Updating totals in a multi-user environment
Date Thu, 30 Oct 2014 17:15:40 GMT
> Is there a more transparent way of doing things, e.g. using lifecycle
> listeners, datachannel filters and such?

If you want the update to happen on commit, you can use a PostPersist/PostRemove listener
on Package. And perhaps update the count with raw SQL to avoid a race condition between multiple
processes updating the same order (or fetch and update Order object, if you don't expect this
to happen).

Andrus



> On Oct 30, 2014, at 7:09 PM, Mark Stobbe <markstobbe85@gmail.com> 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 <mgentry@masslight.net>
> 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 <markstobbe85@gmail.com>
>> 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
>> 


Mime
View raw message