Hi all.
I’m encountering some weirdness when running EJBQLQuery. Consider the following 
code:

        EJBQLQuery q = new EJBQLQuery( "select i.unitPrice,i.quantity from 
InvoiceLine i where i.companyNumber='0100008338'" );
        List fetchedRows = objectContext.performQuery( q );
        System.out.println( "Size of resulting list: " + fetchedRows.size() );
        System.out.println( "Class of fetched objects: " + fetchedRows.get( 0 
).getClass() );

This generates the following output:

        - --- transaction started.
        - SELECT t0.unit_price AS sc0, t0.quantity AS sc1 FROM bok_invoice_line 
t0 WHERE t0.company = ? [bind: 1:'0100008338']
        - === returned 508 rows. - took 72 ms.
        - +++ transaction committed.
        Size of resulting list: 200
        Class of fetched objects: class [Ljava.lang.Object;

As you can see, the SQL is correct, and the debug log shows that the DB returns 
the expected number of 508 objects. However, the resulting List will only 
contain 200 objects. This number will then go on to change in weird ways if I 
modify the query, for example if I add a third attribute to fetch, the List 
will suddenly contain 204 objects—and that number may change based on which 
attribute I added. Quite odd, and I’ve not been able to identify any rule to 
how it happens.

Now, for the second level of weirdness: If I change the query to fetch data 
rows (by invoking setFetchingDataRows( true )), the list will end up containing 
the correct number of rows. But they will still be Object[] but not DataRows.

        - --- transaction started.
        - SELECT t0.unit_price AS sc0, t0.quantity AS sc1 FROM bok_invoice_line 
t0 WHERE t0.company = ? [bind: 1:'0100008338']
        - === returned 508 rows. - took 64 ms.
        - +++ transaction committed.
        Size of resulting list: 508
        Class of fetched objects: class [Ljava.lang.Object;

Any idea what’s happening? Thought I’d ask before I start digging around.

Cheers,
- hugi

Reply via email to