2017-06-12 3 views
0

Ich arbeite an Spring Boot-Anwendung mit Maven und ich verwende Sybase-Datenbank und MyBatis als ORM-Framework.Auswahl der Alias-Spalte in der Spring Boot-Anwendung mit MyBatis Sql Query

Ich brauche Abfrage auszuführen wie:

SELECT M.COL_A, M.COL_B, M.COL_C FROM MY_TABLE M 
UNION 
SELECT N.COL_A, N.COL_B, "" AS COL_C FROM MY_TABLE2 N; 

Jetzt MY_TABLE2 nicht COL_C Spalte hat, aber ich brauche, um es auszuwählen für Klausel Union zu arbeiten.

Diese Abfrage funktioniert als meine Datenbank in Ordnung, aber gibt mir folgende Fehlermeldung, wenn über Mybatis ausgeführt:

com.sybase.jdbc3.jdbc.SybSQLException: Invalid column name ''. 

Antwort

1

Ihre Anwendungsverbindung erscheint mit quoted_identifier aktiviert werden, damit ausgeführt werden.

Zum Beispiel Ihre Tabellennamen für ein paar Systemtabellen Schalt out:

set quoted_identifier on 
SELECT M.id, M.name, M.crdate FROM sysobjects M 
UNION 
SELECT N.id, N.name, "" AS COL_C FROM syscolumns N 
go 

Msg 207, Level 16, State 4: 
Server 'ASE201', Line 2: 
Invalid column name ''. 

können Sie versuchen, deaktivieren quoted_identifier in Verbindung Ihrer Anwendung (sorry, keine Ahnung, wie/wo würden Sie tun, dass in Ihrer Anwendung), oder ersetzen Sie die doppelten Anführungszeichen durch einfache Anführungszeichen, zB:

set quoted_identifier on 
SELECT M.id, M.name, M.crdate FROM sysobjects M 
UNION 
SELECT N.id, N.name, '' AS COL_C FROM syscolumns N 
go 

id  name   crdate 
------- --------------- ------------------- 
     1 sysobjects  May 31 2016 12:55PM 
     2 sysindexes  May 31 2016 12:55PM 
     3 syscolumns  May 31 2016 12:55PM 
     4 systypes  May 31 2016 12:55PM 
     8 syslogs   May 31 2016 12:55PM 
... snip ... 
+0

Danke eine Tonne Mark! Es hat für mich funktioniert. –

+0

@SuhasBadhe; groß; Wenn es keine anderen Probleme/Bedenken gibt, empfehle ich Ihnen, die Frage als beantwortet zu markieren – markp

Verwandte Themen