首页 >Java >即使查询确实正确,查询也会出现语法错误

即使查询确实正确,查询也会出现语法错误

PHPz
PHPz转载
2024-02-22 13:16:13877浏览

php小编柚子带你解决Java编程中常见问题!有时候即使查询语句正确,也可能出现语法错误的情况,这让很多初学者感到困惑。本文将针对这一问题展开讨论,帮助读者深入理解Java编程中的常见错误,解决查询语句出现语法错误的挑战。

问题内容

我打算在 glassfish 上部署我的耳朵文件,但是当我尝试部署耳朵时,我得到:

2023-11-23t10:46:59.388+0100|严重:调用类 org.glassfish.persistence.jpa.jpadeployer 准备方法时出现异常 2023-11-23t10:46:59.389+0100|严重:调用类时出现异常org.glassfish.javaee.full.deployment.eardeployer 准备方法 2023-11-23t10:46:59.389+0100|严重:准备应用程序时出现异常 2023-11-23t10:46:59.389+0100|严重:异常 [eclipselink- 8025](eclipse 持久性服务 - 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.jpqlexception 异常描述:解析查询 时出现语法错误

该查询是一个命名查询,我也在另一个不使用 glassfish 的项目中使用 eclipselink 对其进行了测试(未将其部署在应用程序服务器上)并且运行良好;

我无法弄清楚可能出了什么问题,如果直接使用它查询运行良好,为什么部署在 glassfish 上时它不起作用?

这是命名查询

@Entity
@Table(name = "T_EXE_PROC")
@TableGenerator(name = "ExecuProcGenerator", table = "T_SEQ", pkColumnName = "SEQ_COL", valueColumnName = "SEQ_CONTATOR", pkColumnValue = "EXE_PRO_SEQUE", allocationSize = 10, initialValue = 0)
@NamedQueries({ 

        @NamedQuery(name = "ExeProc.findLastExecProcs", query = "SELECT DISTINCT (e.procedure) FROM ExeProc e WHERE e.cdExecProcs IN ( SELECT DISTINCT (e.cdExecProcs) FROM ExeProc e, ExeStep s where s.ExecProc.cdExecProcs = e.cdExecProcs AND s.stat.cdStation=:cdStation and s.oper.ceLogin=:ceLogin) and e.statusExecProc = :statusExecProc and e.procedure.status = 1 order by e.lastModifiedStepTime DESC"),

        })
public class ExeProc implements Serializable {
    
    private static final long serialVersionUID = 12348979846545312L;
    
    
    public static final String FIND_LAST_EXEC_PROC = "ExeProc.findLastExecProcs";

我已经在 java 应用程序(一个简单的 java 项目)中使用了该查询,并且运行良好; 数据库是mssql

解决方法

问题与glassfish版本有关,在这个版本中

它可以正常工作,而在这个中:

不起作用,换句话说,开源版本无法执行非常复杂的查询(如示例中的查询);

我知道这个星球上可能没有其他人会遇到我遇到的问题,技术非常古老;但我不明白为什么有人拿走了我两分!!

以上是即使查询确实正确,查询也会出现语法错误的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除