@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

MySQLのキャストエラーについて

1
投稿者投稿内容
ほしの
会議室デビュー日: 2008/05/30
投稿数: 5
投稿日時: 2009-03-13 00:02
ローカルマシン(Windows)で、これまで別のMySQLサーバ(Linux)を
参照していましたが、訳あってローカル(Java環境と同マシン)に
入れたMySQLへ接続を変更しました。

変更後、Javaからの接続自体は問題なくできたのですが、
ある画面にて、テーブルから区分データ(IDと名前)を取得して、
LabelValueBeanに設定する際にどうしてもエラー(java.lang.ClassCastException)
になってしまいます。(プログラムは特に変更していません)

String型にキャストできないといったエラーのようだったので、
テーブルの型や文字コードなども色々変えてみましたが
全く変化なしでした。(MySQLの文字コードはutf8にしています)

エラーは下記のような表示です。
------------------------------------------------------------
java.lang.ClassCastException: [B cannot be cast to java.lang.String
at ・・・
------------------------------------------------------------

エラーになっている箇所は、
下記のような処理です。(4行目でエラー発生)
------------------------------------------------------------
Map[] mapRet = productsAB.getProductsSubclassList();
LabelValueBean[] result = new LabelValueBean[mapRet.length];
for(int i=0 ;i < mapRet.length; i++){
result[i] = new LabelValueBean((String)(mapRet[i].get("SUBCLASS_NAME")), (String)(mapRet[i].get("SUBCLASS_ID")));
}
------------------------------------------------------------

また、上記1行目のgetProductsSubclassListでは、
下記のようなSQLを呼んでいます。
------------------------------------------------------------
Map[] mapRet = null;
ArrayList aryCondition = null;
// 条件確保用の配列を作成
aryCondition = new ArrayList();
StringBuffer sql = new StringBuffer()
.append( "select " )
.append( "concat(products_class_id, '/', products_subclass_id) subclass_id, ")
.append( "products_subclass_name subclass_name ")
.append( "from " )
.append( "products_subclass ")
.append( " order by " )
.append( " products_class_id, " )
.append( " products_subclass_id " );

// 結果返却
return this.getResultMap( sql.toString(), aryCondition.toArray( new Object[0] ) );

※getResultMapでは指定したカラム名(小文字->大文字に変換されます)
をキーとして、引数のステートメントから取得した情報をMap配列として
返却します
------------------------------------------------------------

あまりMySQLに明るくないのですが、環境の違いで
何か対応すべきことはあるのでしょうか。
なにかお分かりの方がいらっしゃいましたら
どうぞアドバイスをよろしくお願いいたします。

ほしの
会議室デビュー日: 2008/05/30
投稿数: 5
投稿日時: 2009-03-16 13:34
自己解決しました。

どうやらローカルに入れたMySQLのバージョンが5だと、
文字コードの定義に変更があったりで問題があるようです。

4で入れなおしたところ、同じエラーは出ませんでした。
お騒がせしました。
1

スキルアップ/キャリアアップ(JOB@IT)