2009-10-28 10 views

答えて

9

MySQLは、列挙型をクエリの文字列として扱います。だから、あなたはそれにPreparedStatement.setString()メソッドを使用して列挙型の名前を渡すことができる必要があります:

preparedStatement.setString(1, MY_ENUM.name()); 

これは、もちろん、そのあなたのjavaの名前とMySQLの列挙型の一致を前提としています。

お知らせ:name()はドキュメントごとに、その代わりとしてtoString()を選択した:

名()このメソッドは、主に正確には、正確な名前を得ることに依存して、特殊な状況で使用するために設計されてリリースごとに変化することはありません。

1

あなたはこれを行うことができます(多くのスペースとパフォーマンスに優しいです)整数としてそれを格納することを好むだろう場合:

preparedStatement.setInt(1、myEnum.ordinal());

これはシンプルですが、コード内の列挙型要素の順序を変更して、dbに格納されているものとの関係を壊さないようにする必要があります。