我有以下参数化的JPA或Hibernate查询:
SELECT entity FROM Entity entity WHERE name IN (?)
我想将参数作为ArrayList传递,这可能吗?休眠电流告诉我,
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
这到底有没有可能?
JDBC :作为参数的集合只适用于像":name
“这样的命名参数,而不适用于像"?
”这样的样式参数。
发布于 2011-01-28 20:28:22
您是否在使用Hibernate的Query
对象或JPA?对于JPA,它应该工作得很好:
String jpql = "from A where name in (:names)";
Query q = em.createQuery(jpql);
q.setParameter("names", l);
对于Hibernate,您需要使用setParameterList:
String hql = "from A where name in (:names)";
Query q = s.createQuery(hql);
q.setParameterList("names", l);
发布于 2011-01-28 20:28:02
在HQL中,您可以使用查询参数,并使用setParameterList方法设置集合。
Query q = session.createQuery("SELECT entity FROM Entity entity WHERE name IN (:names)");
q.setParameterList("names", names);
发布于 2016-08-29 02:08:17
省略括号,简单地调用'setParameter‘,现在至少可以在Hibernate中工作了。
String jpql = "from A where name in :names";
Query q = em.createQuery(jpql);
q.setParameter("names", l);
https://stackoverflow.com/questions/4828049
复制相似问题