Re: CayenneRuntimeException: Can't find id

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sat Jan 19 2008 - 16:59:02 EST

  • Next message: Andrus Adamchik: "Re: CayenneRuntimeException: Can't find id"

    > When I remove setPageSize, caching works, so it's paradoxically better
    > than with paging. With paging, on every page cayenne retrieves full
    > table + records relevant for the page.

    Yes, the cache settings are skipped for paginated queries for various
    technical reasons (except for the ROP scenario that Ari mentioned - it
    was hand coded for this case)... although I think we should make it
    work in all situations...

    > So how can I make cayenne 2.x read IDs (or full table and retain only
    > IDs) on first paginated query run and then query only for relevant
    > records?

    You can save a paginated list in a session (or in the whatever scope
    the DataContext it belongs to resides).

    Andrus

    On Jan 19, 2008, at 10:11 PM, Daniel KvasniÄŤka jr. wrote:
    >> Firstly, this is really quite fast. We use this approach on a Swing
    >> application (three tier) with our largest customer now with 120,000
    >> contacts in one table. Pulling this across the network takes only a
    >> few seconds. Remember that Cayenne is just fetching the primary key
    >> from the database for all but the page of data you want to fault.
    >
    > Well, from that SQL log and from what Andrus have said it doesn't seem
    > so. You're probably using 3.0?
    >
    > Also, I've tried setting a name for the query and tried all of the
    > cache policies listed here
    > http://cayenne.apache.org/doc20/caching-query-results.html and cayenne
    > still fetches everything on every page load -- with whatever cache
    > policy I choose.
    > When I remove setPageSize, caching works, so it's paradoxically better
    > than with paging. With paging, on every page cayenne retrieves full
    > table + records relevant for the page. Without paging, caching works,
    > so full table is read, but only once and on every page there is "SQL
    > silence" from now on (it is evident that this is unusable -- storing
    > whole table in the cache)
    >
    > So how can I make cayenne 2.x read IDs (or full table and retain only
    > IDs) on first paginated query run and then query only for relevant
    > records? Am I doing something wrong when setting cache policy?
    >
    > --
    > http://www.danielkvasnicka.net -- webdesign & corporate design,
    > programování internetových a intranetových aplikací
    >



    This archive was generated by hypermail 2.0.0 : Sat Jan 19 2008 - 16:59:38 EST