Use EJBQLQuery. It supports fetching individual columns (and does not require 
SQL).

We are working to support this in ObjectSelect as well.

Andrus

> On Apr 15, 2015, at 12:20 PM, 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
> 

Reply via email to