0

現在、データ型列挙型の列を持つテーブルがあります。私の質問は、この列で IN クエリを実行できますか?

例えば:

enum Gender { MALE, FEMALE, GAY };
Table Student (
  String name;
  Gender gender;
)

実行できますか:

SELECT * FROM Student WHERE gender IN ('MALE', 'FEMALE');

in のパラメーターとして文字列を使用していますが、次のようになっていることに注意してください。

Caused by: java.lang.IllegalArgumentException: Parameter value [('MALE')] did not match expected type [Gender]

この問題の回避策はありますか?

ありがとう、
ツェツヤ

4

1 に答える 1

3

文字列値は認識されないため、次のコードを実行します (デフォルトの EnumTypeで Enum を使用したと仮定します)。

SELECT * FROM Student WHERE gender IN (0,1);

EnumType.String を使用する場合

Query query = session.createQuery(
    "SELECT s FROM Student s WHERE s.gender=:g1 or s.gender=:g2");
query.setParameter("g1", Gender.MALE);
query.setParameter("g2", Gender.FEMALE);
于 2012-08-22T06:24:15.143 に答える