Hibernate HQL转换:java.lang.String不能转换为java.lang.Enum

Jav*_*era 12 java hibernate

我遇到了这个问题:

java.lang.String cannot be cast to java.lang.Enum
Run Code Online (Sandbox Code Playgroud)

当我尝试这个HQL时:

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

在DB中,类型是带有检查约束的Varchar2(x),实体中的变量使用标签@Enumerated(EnumType.STRING)使用Enum定义:

public enum ColumnEnum {
    X, Y;
}
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 22

如果该字段被定义为枚举,则必须将枚举作为参数传递:

query.setParameter(1, TypeEnum.X);
Run Code Online (Sandbox Code Playgroud)

让Hibernate使用映射将参数转换为String(如果@Enumerated(EnumType.STRING)使用)或转换为int(如果@Enumerated(EnumType.ORDINAL)使用).