Heim  >  Artikel  >  Die Abfrage erhält einen Syntaxfehler, obwohl die Abfrage tatsächlich korrekt ist

Die Abfrage erhält einen Syntaxfehler, obwohl die Abfrage tatsächlich korrekt ist

PHPz
PHPznach vorne
2024-02-22 13:16:13841Durchsuche

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.

Frageninhalt

Ich habe vor, meine Ohrfeile auf Glassfish einzusetzen, aber wenn ich versuche, das Ohr einzusetzen, erhalte ich Folgendes:

Bei

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 异常描述:解析查询

ist ein Syntaxfehler aufgetreten

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

Lösung

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen