2
我想選擇計數,以製造類似的JPA提供此用「其中」使用CriteriaBuilder
SELECT COUNT(*) FROM Tickets WHERE ticketStatus = 3 AND ...
但只使用CriteriaBuilder。下面是我得到了什麼:
private class Criteria {
CriteriaBuilder builder;
CriteriaQuery<TicketModel> query;
Root<TicketModel> root;
public Criteria() {
builder = em.getCriteriaBuilder();
query = builder.createQuery(TicketModel.class);
root = query.from(TicketModel.class);
}
}
public long getSearchResultsQuantity(SearchModel search) {
Criteria c = new Criteria();
List<Predicate> params = new ArrayList<Predicate>();
if (search.getStartDate() != null && search.getEndDate() != null) {
params.add(c.builder.between(c.root.get(TicketModel_.ticketDate), search.getStartDate(),
search.getEndDate()));
}
if (search.getStatus() != -1) {
params.add(c.builder.equal(c.root.get(TicketModel_.ticketStatus), search.getStatus()));
}
CriteriaQuery<Long> q = c.builder.createQuery(Long.class);
return em.createQuery(
q.select(c.builder.count(q.from(TicketModel.class))).where(params.toArray(new Predicate[] {})))
.getSingleResult();
}
然而,當我嘗試我收到這樣的異常來執行此查詢:
org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path: 'generatedAlias1.ticketStatus' [select count(generatedAlias0) from com.mif.spring.models.TicketModel as generatedAlias0 where generatedAlias1.ticketStatus=0]
我在春天有點nooby,所以任何幫助將是非常感激!
'TicketModel_'來自哪個params?它不應該是'TicketModel' – jny
由於問題與Spring無關,我刪除了標籤。 – dunni