Default sorting order of getResultList() hibernate

ⅰ亾dé卋堺 提交于 2020-01-25 12:34:13

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!