[英]SQL Query error in JSF, JPA application. javax.ejb.EJBException
我试图从我的Manager获取用户数,并从jsf端传递值。
// Jsf的重要部分
h:outputText value =“#{bookProviderBean.getCoursewegoByTP(101)}
// Bean的重要部分
public IBOOKProviderManager getBookProviderrManager() {
return bookProviderManager;
}
public long getCoursesAddedByTP(Integer bookProviderId){
return courseManager.getCoursesAddedByTP(bookProviderId);
}
//管理器的重要部分
public long getCoursesAddedByTP(Integer bookProviderId){
Query query = this.em.createQuery(
" SELECT COUNT(*) AS total FROM Courses c WHERE c.book_provider_id = " +bookProviderId);
long coursesByTP = 0;
try {
coursesByTP = (Long) query.getSingleResult();
} catch (Exception e) {
e.getStackTrace();
}
return coursesByTP;
}
“从课程WHERE book_provider_id =:tpID”中总共选择COUNT(*)个“); query.setParameter(“ tpID”,bookProviderId);
这是生成的错误:
由以下原因引起:java.lang.IllegalArgumentException:在EntityManager中创建查询时发生异常:异常描述:语法错误解析[SELECT COUNT(*)AS总计FROM课程c WHERE c.book_provider_id = 101]。 [13,13]算术表达式中缺少左表达式。 [14,14]算术表达式中缺少正确的表达式。
非常感谢
EJB容器在JPQL查询的语法中遇到问题。 要根据图书提供者来计算课程数量,可以使用集合的常规方法size()
:
public long getCoursesAddedByTP(Integer bookProviderId){
Query query = this.em.createQuery(
"SELECT c FROM Courses c WHERE c.book_provider_id = :tpID");
query.setParameter("tpID", bookProviderId);
long coursesByTP = 0;
try {
coursesByTP = query.getResultList().size(); // getResultList() and not getSingleResult()
} catch (Exception e) {
e.getStackTrace();
}
return coursesByTP;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.