You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Bryan Lewis <br...@maine.rr.com> on 2006/04/11 02:07:58 UTC

exception in 1.2B1

I put the 1.2B1 jar on our servers over the weekend and got one little
surprise today... an exception when a prefetch is specified on a caching
query. Here's some code that reproduces it, then the stack trace.

    public static List fetchBankruptciesForPastYear(DataContext dc)
    {
        // Omitting the expression details...
        SelectQuery query = new SelectQuery("BKFiler", exp);

        query.setCachePolicy(QueryMetadata.SHARED_CACHE);
        String queryName = "BCI";
        query.setName(queryName);
        query.setRefreshingObjects(false);

        // Omitting the orderings details...
        query.addOrderings(orderings);

        // This line works okay for the first fetch, but causes an exception
        // on subsequent (non-refreshing) fetches.  Removing this line
avoids
        // the exception.
        query.addPrefetch("company");

        return dc.performQuery(query);
    }

java.lang.NullPointerException
org.objectstyle.cayenne.access.ObjectTreeResolver$TreeBuilder.addNode(ObjectTreeResolver.java:218)
org.objectstyle.cayenne.access.ObjectTreeResolver$TreeBuilder.startDisjointPrefetch(ObjectTreeResolver.java:178)
org.objectstyle.cayenne.access.ObjectTreeResolver$TreeBuilder.startUnknownPrefetch(ObjectTreeResolver.java:201)
org.objectstyle.cayenne.query.PrefetchTreeNode.traverse(PrefetchTreeNode.java:209)
org.objectstyle.cayenne.query.PrefetchTreeNode.traverse(PrefetchTreeNode.java:216)
org.objectstyle.cayenne.access.ObjectTreeResolver$TreeBuilder.buildTree(ObjectTreeResolver.java:136)
org.objectstyle.cayenne.access.ObjectTreeResolver.resolveObjectTree(ObjectTreeResolver.java:100)
org.objectstyle.cayenne.access.DataDomainQueryAction.interceptObjectConversion(DataDomainQueryAction.java:372)
org.objectstyle.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:151)
org.objectstyle.cayenne.access.DataDomain.onQuery(DataDomain.java:715)
org.objectstyle.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:249)
org.objectstyle.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:90)
org.objectstyle.cayenne.access.DataContext.onQuery(DataContext.java:1320)
org.objectstyle.cayenne.access.DataContext.performQuery(DataContext.java:1309)
model.BKFiler.fetchBankruptciesForPastYear(BKFiler.java:68)
model.Model.fetchBankruptciesForPastYear(Model.java:511)


[FIXED] exception in 1.2B1

Posted by Andrus Adamchik <an...@objectstyle.org>.
Ok, this is fixed in CVS. As an additional benefit, now shared cache  
will cache prefetched objects for real, unlike Cayenne 1.1 that only  
cached root query objects.

Andrus


On Apr 11, 2006, at 10:45 AM, Andrus Adamchik wrote:

> Bryan, I logged it in Jira. Will investigate:
>
> http://objectstyle.org/jira/browse/CAY-499
>
> Andrus
>
>
> On Apr 11, 2006, at 4:07 AM, Bryan Lewis wrote:
>
>> I put the 1.2B1 jar on our servers over the weekend and got one  
>> little
>> surprise today... an exception when a prefetch is specified on a  
>> caching
>> query. Here's some code that reproduces it, then the stack trace.
>>
>>     public static List fetchBankruptciesForPastYear(DataContext dc)
>>     {
>>         // Omitting the expression details...
>>         SelectQuery query = new SelectQuery("BKFiler", exp);
>>
>>         query.setCachePolicy(QueryMetadata.SHARED_CACHE);
>>         String queryName = "BCI";
>>         query.setName(queryName);
>>         query.setRefreshingObjects(false);
>>
>>         // Omitting the orderings details...
>>         query.addOrderings(orderings);
>>
>>         // This line works okay for the first fetch, but causes an  
>> exception
>>         // on subsequent (non-refreshing) fetches.  Removing this  
>> line
>> avoids
>>         // the exception.
>>         query.addPrefetch("company");
>>
>>         return dc.performQuery(query);
>>     }
>>
>> java.lang.NullPointerException
>> org.objectstyle.cayenne.access.ObjectTreeResolver 
>> $TreeBuilder.addNode(ObjectTreeResolver.java:218)
>> org.objectstyle.cayenne.access.ObjectTreeResolver 
>> $TreeBuilder.startDisjointPrefetch(ObjectTreeResolver.java:178)
>> org.objectstyle.cayenne.access.ObjectTreeResolver 
>> $TreeBuilder.startUnknownPrefetch(ObjectTreeResolver.java:201)
>> org.objectstyle.cayenne.query.PrefetchTreeNode.traverse 
>> (PrefetchTreeNode.java:209)
>> org.objectstyle.cayenne.query.PrefetchTreeNode.traverse 
>> (PrefetchTreeNode.java:216)
>> org.objectstyle.cayenne.access.ObjectTreeResolver 
>> $TreeBuilder.buildTree(ObjectTreeResolver.java:136)
>> org.objectstyle.cayenne.access.ObjectTreeResolver.resolveObjectTree 
>> (ObjectTreeResolver.java:100)
>> org.objectstyle.cayenne.access.DataDomainQueryAction.interceptObjectC 
>> onversion(DataDomainQueryAction.java:372)
>> org.objectstyle.cayenne.access.DataDomainQueryAction.execute 
>> (DataDomainQueryAction.java:151)
>> org.objectstyle.cayenne.access.DataDomain.onQuery(DataDomain.java: 
>> 715)
>> org.objectstyle.cayenne.util.ObjectContextQueryAction.runQuery 
>> (ObjectContextQueryAction.java:249)
>> org.objectstyle.cayenne.access.DataContextQueryAction.execute 
>> (DataContextQueryAction.java:90)
>> org.objectstyle.cayenne.access.DataContext.onQuery 
>> (DataContext.java:1320)
>> org.objectstyle.cayenne.access.DataContext.performQuery 
>> (DataContext.java:1309)
>> model.BKFiler.fetchBankruptciesForPastYear(BKFiler.java:68)
>> model.Model.fetchBankruptciesForPastYear(Model.java:511)
>>
>>
>
>


Re: exception in 1.2B1

Posted by Andrus Adamchik <an...@objectstyle.org>.
Bryan, I logged it in Jira. Will investigate:

http://objectstyle.org/jira/browse/CAY-499

Andrus


On Apr 11, 2006, at 4:07 AM, Bryan Lewis wrote:

> I put the 1.2B1 jar on our servers over the weekend and got one little
> surprise today... an exception when a prefetch is specified on a  
> caching
> query. Here's some code that reproduces it, then the stack trace.
>
>     public static List fetchBankruptciesForPastYear(DataContext dc)
>     {
>         // Omitting the expression details...
>         SelectQuery query = new SelectQuery("BKFiler", exp);
>
>         query.setCachePolicy(QueryMetadata.SHARED_CACHE);
>         String queryName = "BCI";
>         query.setName(queryName);
>         query.setRefreshingObjects(false);
>
>         // Omitting the orderings details...
>         query.addOrderings(orderings);
>
>         // This line works okay for the first fetch, but causes an  
> exception
>         // on subsequent (non-refreshing) fetches.  Removing this line
> avoids
>         // the exception.
>         query.addPrefetch("company");
>
>         return dc.performQuery(query);
>     }
>
> java.lang.NullPointerException
> org.objectstyle.cayenne.access.ObjectTreeResolver 
> $TreeBuilder.addNode(ObjectTreeResolver.java:218)
> org.objectstyle.cayenne.access.ObjectTreeResolver 
> $TreeBuilder.startDisjointPrefetch(ObjectTreeResolver.java:178)
> org.objectstyle.cayenne.access.ObjectTreeResolver 
> $TreeBuilder.startUnknownPrefetch(ObjectTreeResolver.java:201)
> org.objectstyle.cayenne.query.PrefetchTreeNode.traverse 
> (PrefetchTreeNode.java:209)
> org.objectstyle.cayenne.query.PrefetchTreeNode.traverse 
> (PrefetchTreeNode.java:216)
> org.objectstyle.cayenne.access.ObjectTreeResolver 
> $TreeBuilder.buildTree(ObjectTreeResolver.java:136)
> org.objectstyle.cayenne.access.ObjectTreeResolver.resolveObjectTree 
> (ObjectTreeResolver.java:100)
> org.objectstyle.cayenne.access.DataDomainQueryAction.interceptObjectCo 
> nversion(DataDomainQueryAction.java:372)
> org.objectstyle.cayenne.access.DataDomainQueryAction.execute 
> (DataDomainQueryAction.java:151)
> org.objectstyle.cayenne.access.DataDomain.onQuery(DataDomain.java:715)
> org.objectstyle.cayenne.util.ObjectContextQueryAction.runQuery 
> (ObjectContextQueryAction.java:249)
> org.objectstyle.cayenne.access.DataContextQueryAction.execute 
> (DataContextQueryAction.java:90)
> org.objectstyle.cayenne.access.DataContext.onQuery(DataContext.java: 
> 1320)
> org.objectstyle.cayenne.access.DataContext.performQuery 
> (DataContext.java:1309)
> model.BKFiler.fetchBankruptciesForPastYear(BKFiler.java:68)
> model.Model.fetchBankruptciesForPastYear(Model.java:511)
>
>