DAO レイヤーでネイティブ クエリを作成する spring+hibernate アプリケーションがあります。クエリは次のようになります
select name, amount from myTable where id=:id
選択したフィールドが異なるデータ型 (文字列、数値) であることは明らかです。
JSP では、返された結果をテーブルに出力したいのでforeach loop
、返されたセットの各レコードを使用しています。
中括弧の間に負の数を入れたいので、次のコードを使用しています
<c:forEach var="item" items="${resultSet}">
<tr>
<c:forEach var="v" items="${item}" varStatus="st">
<td>
<c:choose>
<c:when test="${v != null}">
<c:choose>
<c:when test="${v<0}">
<c:out value="(${v})"></c:out>
</c:when>
<c:otherwise>
<c:out value="${v}"></c:out>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<c:out value="-"></c:out>
</c:otherwise>
</c:choose>
</td>
</c:forEach>
</tr>
</c:forEach>
クエリの最初の項目は文字列であるため、このコードは NumberFormateException を発生させます。
この問題に対する 2 つの解決策を知っています。1 つ目は SQL クエリに中かっこを入れる方法ですが、アプリケーションには多くのクエリが含まれており、すべてのクエリを変更するには多くの時間がかかるため、このソリューションは使用できません。
2 番目の解決策は、resultTransformer を使用して、返されたデータを 1 つのオブジェクトに変換することですが、これは前と同じ理由で適切ではありません。
この問題を解決するための回避策はありますか?