将SQL查询转换为HQL

时间:2019-12-26 07:36:13

标签: sql hql

我需要将此查询转换为hql才能使用我的代码:

SELECT DISTINCT
    certificate_id , last_scan 
FROM 
    bcs_certificate_instance 
ORDER BY 
    last_scan 
LIMIT 5 ; 

谁能帮忙?

1 个答案:

答案 0 :(得分:1)

select distinct bci.certificate_id , bci.last_scan 
from bcs_certificate_instance bci
order by last_scan asc;

为了限制,必须在执行查询对象之前对查询对象使用setMaxResults()函数。

用于此目的的代码段如下:

Query query = em.createQuery(“select distinct bci.certificate_id , bci.last_scan 
from bcs_certificate_instance bci
order by last_scan asc;”);
query.setMaxResults(10);
List resultData = query.getResultList();

就这样。这样便可以限制HQL中查询返回的记录数。

带有@Query注释的示例:

public interface PersonDao extends EntityDao<Person, Long> {

    @Query("select p from Person p where p.age between ?1 and ?2")

QueryResult<Person> findAllByAge(int minAge, int maxAge);

}    

获得QueryResult后,可以对查询应用更多选项和限制:

List<Person> result = personDao.findAllByAge(18, 65)

.sortAsc(Person_.lastName)

.sortDesc(Person_.age).

.firstResult(10)

.maxResults(10)

.getResultList();

}