Der PHP-Editor Youzi hilft Ihnen bei der Lösung häufiger Probleme bei der Java-Programmierung! Selbst wenn die Abfrageanweisung korrekt ist, kann es manchmal zu Syntaxfehlern kommen, die viele Anfänger verwirren. In diesem Artikel wird dieses Problem behandelt, um den Lesern ein umfassendes Verständnis häufiger Fehler in der Java-Programmierung zu vermitteln und die Herausforderung grammatikalischer Fehler in Abfrageanweisungen zu lösen.
Ich habe vor, meine Ohrfeile auf Glassfish einzusetzen, aber wenn ich versuche, das Ohr einzusetzen, erhalte ich Folgendes:
Bei2023-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 异常描述:解析查询
Die Abfrage ist eine benannte Abfrage, ich habe sie auch mit Eclipselink in einem anderen Projekt ohne Glassfish getestet (sie wurde nicht auf dem Anwendungsserver bereitgestellt) und es hat gut funktioniert
Ich kann nicht herausfinden, was schief gehen könnte. Wenn die Abfrage direkt damit einwandfrei läuft, warum funktioniert sie dann nicht, wenn sie auf Glassfish bereitgestellt wird?
Dies ist eine benannte Abfrage
@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";
Ich habe diese Abfrage in einer Java-Anwendung (einem einfachen Java-Projekt) verwendet und sie funktioniert einwandfrei; Die Datenbank ist mssql
Das Problem hängt mit der Glassfish-Version zusammen, in dieser Version
Es funktioniert gut, und in diesem Fall:
funktioniert nicht, das heißt, die Open-Source-Version kann keine sehr komplexen Abfragen durchführen (wie die im Beispiel);
Ich weiß, dass es wahrscheinlich niemanden sonst auf dem Planeten gibt, der die Probleme hat, die ich habe, und die Technologie ist sehr alt; aber ich verstehe nicht, warum mir jemand meine zwei Cent weggenommen hat! !Das obige ist der detaillierte Inhalt vonDie Abfrage erhält einen Syntaxfehler, obwohl die Abfrage tatsächlich korrekt ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!