【问题标题】:HQL IN operator, Array of Enums ClassCastExceptionHQL IN 运算符,枚举数组 ClassCastException
【发布时间】:2014-11-24 19:37:40
【问题描述】:

这是我的精简类和枚举。

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

有什么想法吗?

【问题讨论】:

    标签: hibernate hql classcastexception


    【解决方案1】:
    query.setParameterList("types", types);
                      ^--
    

    应该这样做。

    【讨论】:

    • 我的疏忽太明显了。谢谢!
    • 上述方法的签名是 setParameters(Object[] values, Type[] types) (Hibernate 3.5.4)。这似乎不合适。方法 setParameterList(String name, Object[] vals) 是正确的。
    【解决方案2】:

    query.setParameterList("types", types);

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多