1
我是新來querydsl並且已經愛上了它,但我不能讓如何在此查詢中使用的別名。如何在querydsl中使用別名?
QProduct product = QProduct.product;
JPQLQuery jPQLQuery =
from(product)
.where(product.name.locate(searchTerm).as("score").gt(0).or(product.code.locate(searchTerm).as("score").gt(0))).groupBy(product.baseProd);
List<Product> matchedNames = jPQLQuery.orderBy(new NumberPath<Integer>(Integer.class, "score").asc()).offset((pageNumber-1)*10).limit(10).list(product);
我首先想到的是這樣的事情會拋出一個錯誤與生成的查詢爲:
java.lang.IllegalArgumentException異常: org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌: 作爲近線3,列31 [從 mesoft.meshopframework.model.Product產物的選擇產品,其中 定位作爲評分> 2或定位(1,product.code?)如(1,product.name?)? 得分>?2分組由product.baseProd按評分排序asc]
可能有人告訴我coorect辦法做到這一點?我希望這不是必要的DB來排序重新計算product.name.locate(searchTerm)
或其他一,
感謝
是啊,我試圖用一個定位表達式進行排序。但由於我是新來的查詢全世界共有,我看你不是,我可能會問「這是否意味着數據庫引擎將計算再次排序定位表達?和什麼辦法避免?」 – azerafati 2014-11-23 09:32:54
重新計算方面取決於您的數據庫引擎。你使用哪一個? – 2014-11-23 17:45:40
恩,所以數據庫引擎也可能會考慮這樣的事情?好! – azerafati 2014-11-23 18:37:31