Hi Ari

Not sure if this is what you are looking for, but this is what I did once:

1. Create a dbEntity in the modeler that has all the columns you are
interested in from the various tables. (So this dbEntity is more like a view
as it doesn't represent a real table.)
2. Create a read only ObjEntity in the modeler based on the 'fake'
3. Create a SQLTemplate query that will retrieve the data from the various
4. Perform the query as usual (no datarows)

For example I did something like:

SQLTemplate reportTemplateQry = new SQLTemplate
     "select A.NAME, B.ORDER from RPT_GROUPS as B, PRT_TEMPLATE as A "
     +"where .... "

List<ReportTemplateLine> lines = ....performQuery( reportTemplateQry );


-----Original Message-----
From: Aristedes Maniatis
Sent: Wednesday, April 15, 2015 11:20 AM
To: user@cayenne.apache.org
Subject: lightweight object fetching

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

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

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?


Aristedes Maniatis
GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A

Search Discussions

Discussion Posts


Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 2 of 5 | next ›
Discussion Overview
groupuser @
postedApr 15, '15 at 9:22a
activeApr 16, '15 at 5:35p



site design / logo © 2021 Grokbase