2017-06-12 5 views
0

Mavenを使用したSpringブートアプリケーションで作業していますが、SybaseデータベースとMyBatisをORMフレームワークとして使用しています。MyBatis Sqlクエリを使用したSpring起動アプリケーションのエイリアス列の選択

私のようなクエリを実行する必要があります。今MY_TABLE2COL_C列を持っていないが、私は仕事にUNION句のためにそれを選択する必要があり

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; 

このクエリは、私のデータベースとして正常に動作しますが、MyBatisのを介して実行時にエラーが発生し、次の私を与える:

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

答えて

1

アプリケーション接続が有効になってQUOTED_IDENTIFIERで実行されているように見えます。例えば

、カップルのシステムテーブルのためのあなたのテーブル名を切り替える:

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 ''. 

あなたはあなたのアプリケーションの接続アプリケーションでそれを行うだろうか/(申し訳ありませんが、アイデアにQUOTED_IDENTIFIER無効にしてみてくださいすることができます)、または二重引用符を一重引用符で置き換えてください。例:

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

ありがとうございますton markp!それは私のために働いた。 @SuhasBadhe; –

+0

;すばらしいです;他の問題や懸念事項がない場合は、質問に答えてマークすることをお勧めします – markp

関連する問題