John,

  Good point, but it turns out it doesn't make any difference. I had actually 
written the code that way. I moved the createQuery() call up to see if that 
helped, and forgot to move it back down before writing my email. Both ways 
produce the same result.

— Miguel



On May 30, 2013, at 2:48 AM, Boblitz John wrote:

> Just an idea, but maybe the 
> 
>       Query query = entityManager.createQuery(qDef);
> 
> Should come after this:
> 
>       List<Order> orderList = makeOrderList(builder, 
> qDef.from(persistentClass), orderFields);
>               if (!orderList.isEmpty()) {
>                       qDef.orderBy(orderList);
>               }
> 
> ?
> 
> Cheers, 
> 
> John
> 
> ---- 
> 
> Who is General Failure, and why is he reading my hard disk?
> 
> 
> 
> 
>> -----Original Message-----
>> From: Miguel Muñoz [mailto:swingguy1...@yahoo.com]
>> Sent: Thursday, May 30, 2013 11:08 AM
>> To: users@openjpa.apache.org
>> Subject: Ordering results obtained through query-by-example
>> 
>> Comrades,
>> 
>>  I'm using the OpenJPA query-by-example API, and it works fine unless I
>> order my results. When I do that, I get way too many results. If I search
>> without specifying an order, I get 4 results from a table of 9 rows. If I 
>> specify
>> an order, I get 36 results instead. (I get everything four times.) The 
>> number I
>> get is always the number I'm supposed to get multiplied by the number of
>> rows.
>> 
>> Has anybody else seen this behavior? I'm trying to figure out if I'm doing
>> something wrong, or if it's a bug in the JPA code.
>> 
>> Here's my method, if you're interested:
>> 
>>      private final Class<E> persistentClass;
>> 
>>      public List<E> findByExample(
>>                      @NotNull E exampleInstance,
>>                      @Nullable Attribute<E,?>[] excludeProperty,
>>                      SingularAttribute<E,?>. orderFields
>>      ) throws DAORuntimeException {
>>              EntityManager entityManager = JpaUtil.getEntityManager();
>>              OpenJPACriteriaBuilder builder = (OpenJPACriteriaBuilder)
>> entityManager.getCriteriaBuilder();
>>              CriteriaQuery<E> qDef =
>> builder.createQuery(persistentClass);
>>              Root<E> from = qDef.from(persistentClass);
>>              qDef.select(from);
>>              qDef.where(builder.qbe(from, exampleInstance,
>> excludeProperty)); // query by example
>>              Query query = entityManager.createQuery(qDef);
>> 
>>              List<Order> orderList = makeOrderList(builder,
>> qDef.from(persistentClass), orderFields);
>>              if (!orderList.isEmpty()) {
>>                      qDef.orderBy(orderList);
>>              }
>> 
>>              return (List<E>) query.getResultList();
>>      }
>> 
>>      private List<Order> makeOrderList(
>>                      CriteriaBuilder builder,
>>                      Root<E> root,
>>                      SingularAttribute<E, ?>[] pOrderFields
>>      ) {
>>              List<Order> orderList = new LinkedList<>();
>>              for (SingularAttribute<E, ?> attribute: pOrderFields) {
>>                      orderList.add(builder.asc(root.get(attribute)));
>>              }
>>              return orderList;
>>      }
>> 
>> 
>> If I call it like this, it works fine:
>> 
>>              List<Incident> dIncidentList =
>> incidentDao.findByExample(dExample, null);
>> 
>> If I call it like this, it returns lots of duplicates:
>> 
>>              List<Incident> dIncidentList =
>> incidentDao.findByExample(dExample, null, Incident_.entryTime);
>> 
>> Is it me? Has anyone else seen this bug?
>> 
>> 
>> -------------------------------------------
>> 
>> Miguel Muñoz
>> swingguy1...@yahoo.com
>> 323/225-7285
>> 
>> -------------------------------------------
>> 
>> The Sun, with all those planets revolving around it and dependent on it, can
>> still ripen a vine of grapes like it had nothing else to do in the world.
>> 
>>  -- Galileo
>> 
>> -------------------------------------------
>> 
>> There are seven sins in the world.
>>    Wealth without work.
>>    Pleasure without conscience.
>>    Knowledge without character.
>>    Commerce without morality.
>>    Science without humanity.
>>    Worship without sacrifice.
>>    Politics without principle.
>> 
>>  -- Mohandas Gandhi
>> 
>> -------------------------------------------
>> 
>> If tyranny and oppression come to this land, it will come in the guise of
>> fighting a foreign enemy.
>> 
>>  -- James Madison
>> 
>> 
> 

-------------------------------------------

Miguel Muñoz
swingguy1...@yahoo.com
323/225-7285

-------------------------------------------

The Sun, with all those planets revolving around it and dependent on it, can 
still ripen a vine of grapes like it had nothing else to do in the world.

  -- Galileo

-------------------------------------------

There are seven sins in the world.
    Wealth without work.
    Pleasure without conscience.
    Knowledge without character.
    Commerce without morality.
    Science without humanity.
    Worship without sacrifice.
    Politics without principle. 

  -- Mohandas Gandhi

-------------------------------------------

If tyranny and oppression come to this land, it will come in the guise of 
fighting a foreign enemy.

  -- James Madison



Reply via email to