2017-05-04 51 views
1

私はSpring、MyBatis、およびMicrosoft SQL Serverを使用しています。私のプロジェクトでは、MyBatis マッパーxmlファイルからプロシージャを呼び出す必要があります。MyBatis:SQL Serverからストアドプロシージャをキャッチするメッセージをキャッチ

だから、私は次のようにそれをやった:

<select id="callProcedure" parameterType="TestBean" statementType="CALLABLE" > 
    {CALL callprocedure(#{id},#{regId})} 
</select> 

そして、これがうまく機能しています。それ

try { 
    myMapper.callProcedure(testBean); 
} catch (Exception e) { 
    System.out.println(e.getMessage()); 
} 

、主な問題:私は次のようにで私のDAOのJavaクラスを例外をキャッチし、

THROW 50002, "Invalid Parameters", 1; 

そして:その後、私は以下のように私のストアドプロシージャ内THROW文を追加しましたここにある。メッセージをプリントアウトすると、それは非常に多くの行と原因を示しました。私が投げるメッセージだけでなく、私は、私が投げたメッセージだけが欲しい。

私はe.getMessage()を呼び出すことによって、手順からスローされたメッセージを取得できません。

これは、次のメッセージを表示:

org.springframework.jdbc.UncategorizedSQLException: 
### Error querying database. Cause:com.microsoft.sqlserver.jdbc.SQLServerException: Invalid Parameters 
### The error may exist in mybatis/mapper/application/test.xml 
### The error may involve com.test.core.mapper.application.TestMapper.callProcedure-Inline 
### The error occurred while setting parameters 
### SQL: {CALL callprocedure(?,?)} 
### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid Parameters; uncategorized SQLException for SQL []; SQL state [S0001]; error code [50002]; Invalid Parameters; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Invalid Parameters 
... 

私は手続きからスローメッセージを取得するには、このとのトラブルです。これをどうすれば解決できますか?

他の方法で作業していますか?私を助けてください。

ありがとうございました。

答えて

0

ここに私の答えがあります。私が次のようにしてみると、メッセージがあります。

try { 
    myMapper.callProcedure(testBean); 
} catch (Exception e) { 
    System.out.println(e.getCause().getMessage()); 
} 

これが私の問題を解決しました。