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