Yes, this is normal. Altering parameters changes the query, so in two case you end up with two different queries behind the scenes, each cached separately.

Andrus


On Apr 21, 2009, at 1:50 PM, Nikos Paraschou wrote:
Στις 21-04-2009, ημέρα Τρι, και ώρα 13:21 +0300, ο/ η Andrus Adamchik
έγραψε:
Shouldn't it first look in cache?


Yes it should. Are you using the same set of parameters in both cases?

In the first case I am just calling the query "selectVehicles" which is
stored in DataMap without defining any parameters. All vehicles are
returned.

In the second case I want to retrieve a specific vehicle so I define the
parameter plate

params.put("plate", "koz-6657") and call

performQuery("selectVehicles", params, false);

The second call doesn't retrieve the requested vehicle from the cache
but instead, it sends a query to the DB.

Why is this happening? Is it normal?


And also which version of Cayenne is this?

I am using Cayenne 2.0.4.


Andrus


On Apr 21, 2009, at 12:28 PM, Nikos Paraschou wrote:

Hello,

I created an Object Select Query in the Modeller which selects * from table Vehicles. The query has a qualifier (plate = $plate). In Result
Caching I selected Shared Cache and unchecked the checkbox Refresh
Results.

I wrote the following code:

      Map params = new HashMap();
      params.put("plate", "koz-6657");

      List allVehicles = context.performQuery("selectVehicles",
false);
      List specificVehicle = context.performQuery("selectVehicles",
params, false);

I noticed that the first call of performQuery stores the retrieved
Vehicle Objects in cache.
But the second call, instead of getting the specific vehicle from
cache
it sends a query to the database.

Why is this happening? Shouldn't it first look in cache?

Thank you,
Nikos Paraschou






Reply via email to