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
> 

Reply via email to