12

私はこの問題を抱えています:

java.lang.String cannot be cast to java.lang.Enum

このHQLを試してみると:

...
query = em.createQuery("SELECT object from Entity object where object.column = ?");
query.setParameter(1, "X");
return query.getResultList();

DBでは、タイプはチェック制約のあるVarchar2(x)であり、エンティティ内の変数は、タグ@Enumerated(EnumType.STRING)を使用してEnumで定義されます。

public enum ColumnEnum {
    X, Y;
}
4

3 に答える 3

24

フィールドが列挙型として定義されている場合は、列挙型をパラメーターとして渡す必要があります。

query.setParameter(1, TypeEnum.X);

そして、Hibernateがマッピングを使用して、パラメーターを文字列(使用されている場合@Enumerated(EnumType.STRING))またはint(@Enumerated(EnumType.ORDINAL)使用されている場合)に変換します。

于 2012-08-07T07:08:57.810 に答える
3

次の注釈を使用して

@Enumerated (value = EnumType.STRING)

また

Query q = session.createQuery(from Comment c where c.rating = :rating);
q.setParameter(rating,
               Rating.LOW,
               Hibernate.custom(RatingUserType.class));
于 2012-08-07T07:47:43.663 に答える