HQL IN运算符,枚举类ClassCastException的Array [英] HQL IN operator, Array of Enums ClassCastException

查看:152
本文介绍了HQL IN运算符,枚举类ClassCastException的Array的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  class A 
{
@Enumerated(值= EnumType.STRING)
AType类型;
}

枚举AType
{
X,Y
}

如果我运行

  query = FROM A a WHERE a.type =:type 
query.setParameter(type,AType.X);

一切都很好,并且很棒。



但是,如果我做了以下事情:

  AType [] types = new AType [1]; 
类型[0] = AType.X;
query = FROM A WHERE a.type IN(:types)
query.setParameter(types,types);

我得到:

  Lcom.src.AType;不能转换为java.lang.Enum 

如果我这样做:

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

我得到:

  Ljava.lang.Enum;无法转换为java.lang.Enum 

有什么想法?

解决方案

  query.setParameterList(types,types); 
^ -

这应该做到。


Here is my stripped down class and enum.

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

enum AType
{
    X,Y
}

if I run

query = FROM A a WHERE a.type = :type
query.setParameter("type", AType.X);

All is fine and dandy.

However if I do the following:

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

I get:

Lcom.src.AType; cannot be cast to java.lang.Enum

If I do:

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

I get:

Ljava.lang.Enum; cannot be cast to java.lang.Enum

Any ideas?

解决方案

query.setParameterList("types", types);
                  ^--

This should do it.

这篇关于HQL IN运算符,枚举类ClassCastException的Array的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆