Hibernate HQL IN运算符,枚举ClassCastException数组

Hibernate HQL IN运算符,枚举ClassCastException数组,hibernate,hql,classcastexception,Hibernate,Hql,Classcastexception,这是我的精简类和枚举 class A { @Enumerated (value = EnumType.STRING) AType type; } enum AType { X,Y } 如果我跑 query = FROM A a WHERE a.type = :type query.setParameter("type", AType.X); 一切都很好 但是,如果我执行以下操作: AType[] types = new AType[1]; types[0] = AT

这是我的精简类和枚举

class A
{
    @Enumerated (value = EnumType.STRING)
    AType type;
}

enum AType
{
    X,Y
}
如果我跑

query = FROM A a WHERE a.type = :type
query.setParameter("type", AType.X);
一切都很好

但是,如果我执行以下操作:

AType[] types = new AType[1];
types[0] = AType.X;
query = FROM A a WHERE a.type IN (:types)
query.setParameter("types", types);
我得到:

Lcom.src.AType; cannot be cast to java.lang.Enum
如果我这样做:

Enum[] types = new Enum[1];
types[0] = AType.X;
query = FROM A a WHERE a.type IN (:types)
query.setParameter("types", types);
我得到:

Ljava.lang.Enum; cannot be cast to java.lang.Enum
有什么想法吗

query.setParameterList("types", types);
                  ^--
这应该可以做到


这应该可以做到。

query.setParameterListtypes,types

query.setParameterListtypes,类型

我这方面显然有疏忽。谢谢上述方法的签名为setParametersObject[]值,类型为[]类型Hibernate 3.5.4。这似乎不合适。方法setParameterListString名称Object[]vals就是正确的方法。我这方面的疏忽太明显了。谢谢上述方法的签名为setParametersObject[]值,类型为[]类型Hibernate 3.5.4。这似乎不合适。方法setParameterListString名称Object[]vals是正确的。