问题
What is the sorting mechanism of Hibernate for implementation of getResultList() of JPA ? Is it by the id or is it not guaranteed a proper order ? I did not see any detail regarding this in JPA javadoc.
/**
* Execute a SELECT query and return the query results
* as an untyped List.
*
* @return a list of the results
*
* @throws IllegalStateException if called for a Java
* Persistence query language UPDATE or DELETE statement
* @throws QueryTimeoutException if the query execution exceeds
* the query timeout value set and only the statement is
* rolled back
* @throws TransactionRequiredException if a lock mode has
* been set and there is no transaction
* @throws PessimisticLockException if pessimistic locking
* fails and the transaction is rolled back
* @throws LockTimeoutException if pessimistic locking
* fails and only the statement is rolled back
* @throws PersistenceException if the query execution exceeds
* the query timeout value set and the transaction
* is rolled back
*/
List getResultList();
But each time I run and test the results it give me the list ordered by id. That is what I am still confused although a genius had down voted this problem
I just put show_sql true and checked the generated sql. It does not have any sorting included.
回答1:
It's is the order of the elements returned by the database.
You will never know which order it is as the database is free to return a ResultSet
in any order (especially when inserting and deleting in a table).
To ensure a certain order you have to define this yourself.
回答2:
Method getResultList
from javax.persistence.Query
returns the default order which returned by DB. However, you can specify the order in query
List customerList = em.createQuery("SELECT r FROM Customer r").getResultList();
List customerList1 = em.createQuery("SELECT r FROM Customer r order by r.lastUpdatedDate").getResultList();
List customerList2 = em.createQuery("SELECT r FROM Customer r order by r.lastUpdatedDate desc").getResultList();
来源:https://stackoverflow.com/questions/17607755/default-sorting-order-of-getresultlist-hibernate