Well, the error still happens because the DataContexts are different
at the time when you set the relationship. The question is why.
> I think when this query runs secondly after the first run, first
> query result refrences corrupted by second query results.
I don't preclude a possibility of a bug in the caching mechanism, but
it seems very unlikely that the objects from another context will
leak in a given context's cache.
I guess all I can recommend is upgrading to RC2 and debugging it
further on your end to get to the cause.
Andrus
On Jul 10, 2006, at 2:39 AM, Emre Yõlmaz wrote:
> Hi,
>
> I get the below exception rarely;
>
> [v.1.2-dev-2006-4-12 April 12 2006] Cannot set object as
> destination of relationship personelRel because it is in a
> different DataContext.
>
> But I use a single context so it is not a different context with
> the other database objects. I think the reason of this exception is
> that I use the Object Select Query(named "PersonelCard") on cayenne
> modeller. I think when this query runs secondly after the first
> run, first query result refrences corrupted by second query
> results.Query make resusult caching: DataContext cache, refresh
> result and fetch limit,rows:1. Also I get this exception not the
> all of the run Query, this occurs rarely.
> What can I do prevent this exception?
>
> Query code:
> public static DbObject get(String trNo,Integer cardNo) {
> try{
> Map<String,Object> parameters = new HashMap<String,Object>();
> parameters.put(TRANSPONDER_NO_PROPERTY, trNo);
> parameters.put(BADGE_NO_PROPERTY, cardNo);
>
> List cards = localContext.performQuery("PersonelCard",
> parameters, true);
> return (cards.size() > 0) ? (DbObject) cards.get(0) : null;
> }catch(Exception e){
> logObj.error(e.getMessage(),e);
> return null;
> }
> }
This archive was generated by hypermail 2.0.0 : Mon Jul 10 2006 - 11:03:06 EDT