No, I haven’t had the time to dig into this yet since it's quite the Heisenbug. Switched to SQL for the time being.
- hugi > On 6. sep. 2016, at 07:10, Andrus Adamchik <[email protected]> wrote: > > I don't have an explanation.. Were you able to find anything? > > Andrus > >> On Aug 30, 2016, at 2:35 PM, Hugi Thordarson <[email protected]> wrote: >> >> 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 >
