我遇到了这个问题:
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)
使用).