EclipseLink 查询 - 来自学生的 Select count(*) 不工作

EclipseLink Query - Select count(*) from student s not working

我遇到以下异常:-

[13, 13] 算术表达式中缺少左边的表达式。 [14, 14] 算术表达式中缺少正确的表达式。

麻烦帮我分析一下问题

P.S。如果我将我的代码中的上述查询替换为 select * from student s,它工作正常。

Exception Description: Syntax error parsing [select count(*) from Student s ]. 
    [13, 13] The left expression is missing from the arithmetic expression.
    [14, 14] The right expression is missing from the arithmetic expression.
    java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
    Exception Description: Syntax error parsing [select count(*) from Student s ]. 
    [13, 13] The left expression is missing from the arithmetic expression.
    [14, 14] The right expression is missing from the arithmetic expression.
        at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605)
        at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:334)
        at com.sun.proxy.$Proxy84.createQuery(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:257)
        at com.sun.proxy.$Proxy84.createQuery(Unknown Source)
        at com.core.commons.domain.util.reference.repository.AbstractSearchCriteriaSupportRepositoryImpl.createQuery(AbstractSearchCriteriaSupportRepositoryImpl.java:146)
        at com.core.commons.domain.util.reference.repository.AbstractSearchCriteriaSupportRepositoryImpl.getTotalRecordsCount(AbstractSearchCriteriaSupportRepositoryImpl.java:117)
        at com.core.commons.domain.util.reference.repository.AbstractSearchCriteriaSupportRepositoryImpl.findBy(AbstractSearchCriteriaSupportRepositoryImpl.java:48)
        at com.wfm.ft.service.FinancialTransactionServiceImpl.getAllBillingAccounts(FinancialTransactionServiceImpl.java:157)
        at com.wfm.ft.web.FTEntryController.getAllBillingAccounts(FTEntryController.java:42)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496)
        at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilter(WebRequestTraceFilter.java:115)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextFilterConfiguration.doFilterInternal(EndpointWebMvcAutoConfiguration.java:137)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration$MetricsFilter.doFilterInternal(MetricFilterAutoConfiguration.java:85)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at com.core.commons.service.security.filter.AssociatedPartiesCallChecker.doFilter(AssociatedPartiesCallChecker.java:64)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at com.core.commons.service.security.filter.AdminUrlCallChecker.doFilter(AdminUrlCallChecker.java:53)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at com.core.commons.service.security.filter.BEMatcherFilter.doFilter(BEMatcherFilter.java:68)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at com.core.commons.service.security.filter.HttpCreateProcessContextFilter.doFilter(HttpCreateProcessContextFilter.java:44)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at com.core.commons.service.security.filter.HttpSecuredAccessDataExtractor.doFilter(HttpSecuredAccessDataExtractor.java:89)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at com.core.commons.service.security.filter.CreateSystemUserContextFilter.doFilter(CreateSystemUserContextFilter.java:69)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at com.core.commons.service.web.SimpleCORSFilter.verifyRequestAndProcess(SimpleCORSFilter.java:183)
        at com.core.commons.service.web.SimpleCORSFilter.doFilter(SimpleCORSFilter.java:83)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at com.core.commons.service.security.filter.TenantProcessContextFilter.doFilter(TenantProcessContextFilter.java:51)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
        at org.eclipse.jetty.server.Server.handle(Server.java:370)
        at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
        at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
        at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
        at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:52)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Unknown Source)
    Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JPQLException
    Exception Description: Syntax error parsing [select count(*) from Student s ]. 
    [13, 13] The left expression is missing from the arithmetic expression.
    [14, 14] The right expression is missing from the arithmetic expression.
        at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:155)
        at org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:334)
        at org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:278)
        at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163)
        at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142)
        at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116)
        at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:102)
        at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:86)
        at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603)
        ... 84 more

更新 1

Exception Description: Problem compiling [select count(ax) from ( select gle.glAccount.accountId as accountId, gle.glAccount.qualifier.name as accountName, gle.glAccount.accountType as accountType,gle.amount.currency.symbol as symbol ,sum(gle.amount.value * gle.postingTypeValue) as totalSum from GLEntry gle group by gle.glAccount.id, gle.glAccount.qualifier.name, gle.glAccount.accountType, gle.amount.currency.symbol,gle.glAccount.id ) ax]. 
[22, 399] '(select gle.glAccount.accountId as accountId, gle.glAccount.qualifier.name as accountName, gle.glAccount.accountType as accountType, gle.amount.currency.symbol as symbol, sum(gle.amount.value * gle.postingTypeValue) as totalSum from GLEntry gle group by gle.glAccount.id, gle.glAccount.qualifier.name, gle.glAccount.accountType, gle.amount.currency.symbol, gle.glAccount.id) ax' cannot be the first declaration of the FROM clause.
java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Problem compiling [select count(ax) from ( select gle.glAccount.accountId as accountId, gle.glAccount.qualifier.name as accountName, gle.glAccount.accountType as accountType,gle.amount.currency.symbol as symbol ,sum(gle.amount.value * gle.postingTypeValue) as totalSum from GLEntry gle group by gle.glAccount.id, gle.glAccount.qualifier.name, gle.glAccount.accountType, gle.amount.currency.symbol,gle.glAccount.id ) ax]. 
[22, 399] '(select gle.glAccount.accountId as accountId, gle.glAccount.qualifier.name as accountName, gle.glAccount.accountType as accountType, gle.amount.currency.symbol as symbol, sum(gle.amount.value * gle.postingTypeValue) as totalSum from GLEntry gle group by gle.glAccount.id, gle.glAccount.qualifier.name, gle.glAccount.accountType, gle.amount.currency.symbol, gle.glAccount.id) ax' cannot be the first declaration of the FROM clause.
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605)
    at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:334)
    at com.sun.proxy.$Proxy84.createQuery(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:257)
    at com.sun.proxy.$Proxy84.createQuery(Unknown Source)
    at com.core.commons.domain.util.reference.repository.AbstractSearchCriteriaSupportRepositoryImpl.createQuery(AbstractSearchCriteriaSupportRepositoryImpl.java:134)
    at com.core.commons.domain.util.reference.repository.AbstractSearchCriteriaSupportRepositoryImpl.getTotalRecordsCount(AbstractSearchCriteriaSupportRepositoryImpl.java:109)
    at com.core.commons.domain.util.reference.repository.AbstractSearchCriteriaSupportRepositoryImpl.findBy(AbstractSearchCriteriaSupportRepositoryImpl.java:48)
    at com..ft.service.FinancialTransactionServiceImpl.getAllBillingAccounts(FinancialTransactionServiceImpl.java:157)
    at com..ft.web.FTEntryController.getAllBillingAccounts(FTEntryController.java:42)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496)
    at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilter(WebRequestTraceFilter.java:115)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextFilterConfiguration.doFilterInternal(EndpointWebMvcAutoConfiguration.java:137)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration$MetricsFilter.doFilterInternal(MetricFilterAutoConfiguration.java:85)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at com.core.commons.service.security.filter.AssociatedPartiesCallChecker.doFilter(AssociatedPartiesCallChecker.java:64)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at com.core.commons.service.security.filter.AdminUrlCallChecker.doFilter(AdminUrlCallChecker.java:53)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at com.core.commons.service.security.filter.BEMatcherFilter.doFilter(BEMatcherFilter.java:68)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at com.core.commons.service.security.filter.HttpCreateProcessContextFilter.doFilter(HttpCreateProcessContextFilter.java:44)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at com.core.commons.service.security.filter.HttpSecuredAccessDataExtractor.doFilter(HttpSecuredAccessDataExtractor.java:89)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at com.core.commons.service.security.filter.CreateSystemUserContextFilter.doFilter(CreateSystemUserContextFilter.java:80)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at com.core.commons.service.web.SimpleCORSFilter.verifyRequestAndProcess(SimpleCORSFilter.java:183)
    at com.core.commons.service.web.SimpleCORSFilter.doFilter(SimpleCORSFilter.java:83)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at com.core.commons.service.security.filter.TenantProcessContextFilter.doFilter(TenantProcessContextFilter.java:51)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Unknown Source)
Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Problem compiling [select count(ax) from ( select gle.glAccount.accountId as accountId, gle.glAccount.qualifier.name as accountName, gle.glAccount.accountType as accountType,gle.amount.currency.symbol as symbol ,sum(gle.amount.value * gle.postingTypeValue) as totalSum from GLEntry gle group by gle.glAccount.id, gle.glAccount.qualifier.name, gle.glAccount.accountType, gle.amount.currency.symbol,gle.glAccount.id ) ax]. 
[22, 399] '(select gle.glAccount.accountId as accountId, gle.glAccount.qualifier.name as accountName, gle.glAccount.accountType as accountType, gle.amount.currency.symbol as symbol, sum(gle.amount.value * gle.postingTypeValue) as totalSum from GLEntry gle group by gle.glAccount.id, gle.glAccount.qualifier.name, gle.glAccount.accountType, gle.amount.currency.symbol, gle.glAccount.id) ax' cannot be the first declaration of the FROM clause.
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:155)
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:347)
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:278)
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163)
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142)
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116)
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:102)
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:86)
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603)
    ... 84 more

尝试使用 select count(s) from Student s

我认为这个例外是不言自明的。 JPQL 解析器将 (*) 视为算术运算符,因此它期望括号内的两个操作数执行乘法。

为了使查询字符串有效,您需要添加 路径表达式 来引用学生的状态字段,即

-- dummy example
SELECT COUNT(s.age * s.height) FROM Student s

如果您对 EclipseLink 的实现感兴趣,您可以更深入地了解 org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate 语法和语义验证开始的方法。