Hi Ari, We chose option 2 and created a view with a read-only modeler mapping. This was especially more useful for us since we had quite a few joins we were flattening out for putting into an overview table and we kept all that activity in the database instead of round-trips between our server and the database.
I was going to mention creating "subset" entities, too, but Jurgen already suggested that. mrg On Wed, Apr 15, 2015 at 5:20 AM, Aristedes Maniatis <a...@maniatis.org> wrote: > Cayenne has very nice functionality for paging large lists of objects, so > that the list is mostly hollow objects which are retrieved in a lazy > fashion as they are accessed. > > This works well to fetch 100,000 contacts in a list and only draw the ones > visible to the user as they scroll. What works less well is the common use > case of a list view where you might only want to show several attributes of > a large record. > > So a list of contacts might show just: > > * firstName > * lastName > * totalSales > > To fetch this data requires a query on contact with a prefetch to > invoices. Lots of data being loaded from two or more tables and potentially > a bit slow. > > Some options: > > 1. Use DataRows. This is simple, but you lose some of the nice > modelling/entity features from Cayenne. You have to type all the columns > yourself. > > 2. Create a view in the database with just three columns (plus a PK) and > create a separate read-only Cayenne model which maps to that view. But now > you are hardcoding your application to a specific database and changing the > representation is hard. > > I want something half way between the two. SQLtemplate to fetch only the > columns or aggregates I need, but mapped to some sort of read-only > lightweight Cayenne entity. > > > Has anyone tried something like this? > > > Ari > > > > -- > --------------------------> > Aristedes Maniatis > GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A >