HQL IN operator, Array of Enums ClassCastException

Here is my stripped down class and listing.

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); 

Everything 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 this:

 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?

+1
source share
2 answers
 query.setParameterList("types", types); ^-- 

That should do it.

+3
source

query.setParameterList ("types", types);

+3
source

Source: https://habr.com/ru/post/950790/


All Articles