Hi,

This is the 'working' part

       System.out.println("Running with fetchlimit: " + pageSize);
       final DataContext dataContext = this.createDataContext();

       SQLTemplate query = new SQLTemplate(VersionedObjectImpl.class, sql);
       query.addPrefetch(_VersionedObjectImpl.ATTRIBUTES_PROPERTY);

       if (pageSize > 0) {
           query.setPageSize(pageSize);
       }
       List<VersionedObjectImpl> list = dataContext.performQuery(query);

for (Iterator<VersionedObjectImpl> iterator = list.iterator(); iterator.hasNext();) {
           this.show(iterator.next());
       }

VersionedObjectImpl.class is the main table and the VersionedobjectImpl.ATTRIBUTES_PROPERTY
is the relation name for the detail table.

The sql provided is (my own made simple 'try out' query, the actual query is WAY more complex)

select o.object_id as "OBJECT_ID", o.ancestor_path as "ANCESTOR_PATH", o.object_type as "OBJECT_TYPE", o.object_identifier as "OBJECT_IDENTIFIER", o.created_revision_id as "CREATED_REVISION_ID", o.deleted_revision_id as "DELETED_REVISION_ID", a.attribute_id as "attributes.ATTRIBUTE_ID", a.name as "attributes.NAME", a.type_name as "attributes.TYPE_NAME", a.string_value as "attributes.STRING_VALUE", a.integer_value as "attributes.INTEGER_VALUE", a.date_value as "attributes.DATE_VALUE" from rev_object o left join rev_attribute a on a.object_id=o.object_id

If I run this without page size no problem.
With page size set eg to 100 I get

Exception in thread "main" org.apache.cayenne.CayenneRuntimeException: [v.3.0B1 Nov 09 2009 09:53:47] Some ObjectIds are missing from the database. Expected 100, fetched 85 at org.apache.cayenne.access.IncrementalFaultList.checkPageResultConsistency(IncrementalFaultList.java:364) at org.apache.cayenne.access.IncrementalFaultList.resolveInterval(IncrementalFaultList.java:301) at org.apache.cayenne.access.IncrementalFaultList.get(IncrementalFaultList.java:550) at org.apache.cayenne.access.IncrementalFaultList$1.next(IncrementalFaultList.java:467) at com.traserv.incrementalsupply.integration.demo.CayenneDemo.doit1a(CayenneDemo.java:188) at com.traserv.incrementalsupply.integration.demo.CayenneDemo.main(CayenneDemo.java:235)

tx

Hans


Andrus Adamchik wrote:
You may have done that already in the previous messages, but could you give a snip of your SQLTemplate creation code here (just to make sure I understand all the settings used in this specific case). And also if possible, SQL generated in the console for the initial query, and then for the failing page query?

Thanks,
Andrus


On Nov 11, 2009, at 2:51 PM, Hans Pikkemaat wrote:

Hi,

I tried 3.0b but without effect.

If I use an SQLTemplate in combination with setPageSize I also get the exception mentioned earlier:

Exception in thread "main" org.apache.cayenne.CayenneRuntimeException: [v.3.0B1 Nov 09 2009 09:53:47] Some ObjectIds are missing from the database. Expected 100, fetched 85 at org .apache .cayenne .access .IncrementalFaultList .checkPageResultConsistency(IncrementalFaultList.java:364) at org .apache .cayenne .access .IncrementalFaultList.resolveInterval(IncrementalFaultList.java:301) at org .apache .cayenne.access.IncrementalFaultList.get(IncrementalFaultList.java: 550) at org.apache.cayenne.access.IncrementalFaultList $1.next(IncrementalFaultList.java:467) at com .traserv .incrementalsupply .integration.demo.CayenneDemo.doit1(CayenneDemo.java:136) at com .traserv .incrementalsupply .integration.demo.CayenneDemo.main(CayenneDemo.java:183)

If I use a SelectQuery it works oke. But this is not an option for me because I cannot construct
my query using SelectQuery because of its complexity.

Any ideas?

tx

Hans



Reply via email to