Pie*_*ouy 16 orm hibernate jpa sql-order-by jpql
我正在尝试使用ORDER BY子句编写JPQL查询:
query = "SELECT c FROM item ORDER BY c.name ASC"
Run Code Online (Sandbox Code Playgroud)
我想设置一个"order"参数,其值可以是"ASC"或"DESC":
query = "SELECT c FROM item ORDER BY c.name :order"
Run Code Online (Sandbox Code Playgroud)
然后在我的实现中:
query.setParameter("order", "ASC");
Run Code Online (Sandbox Code Playgroud)
这是我收到Hibernate错误的时候:
org.hibernate.HibernateException: Errors in named queries
Run Code Online (Sandbox Code Playgroud)
关于我做错了什么的任何想法?谢谢!
Mar*_*ers 18
"ASC"或"DESC"不能是查询参数.您可以使用字符串连接.
query = "SELECT c FROM item ORDER BY c.name " + sortOrder;
Run Code Online (Sandbox Code Playgroud)
您应该验证内容sortOrder只能是ASC或DESC,而不是直接来自用户.
您可以通过以下方式实现DAO,而不是将包含"order by"子句的命名Query写入两次:
public List<MyEntity> findByAttribute(boolean desc,...){
TypedQuery<MyEntity> q = em.createNamedQuery(...
q.setParameter(...
List<MyEntity> result = q.getResultList();
if(desc){
Collections.reverse(result );
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23754 次 |
| 最近记录: |