shl*_*cee 5 java hibernate hql
我正在努力理解我在 HQL 查询中的错误:
public List<Pats> getIds(List<String> patIds) {
Session session = getSession();
String hql = "from OurPats where patId = any (:patIds)";
// String hql = "from OurPats where patId in (:patIds)";
return session.createQuery(hql).setParameterList("patIds", patIds).list();
Run Code Online (Sandbox Code Playgroud)
}
...注释掉的行工作正常,但我希望非工作 ANY 比较的功能,因为 patIds.size() 可以大于 2^15(导致 postgresql 中断)。
从http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html来看,ANY 函数应该可以工作。在其他论坛问题中,人们说不要使用上面链接中规定的元素功能(我已经尝试过元素,但出现 IDENT 错误)。上面的代码产生一个 org.hibernate.hql.ast.QuerySyntaxException:意外令牌::错误。
有任何想法吗?感谢帮助。
不确定你想要“any”而不是“in”的功能是什么意思。我知道的每个 DBMS 都将它们视为同义词。
\n\n= ANY 不允许用于 MySQL 中的列表,仅适用于子查询。表面上你已经将方言设置为 MySQL 并且 Hibernate 知道这一点?
\n\nhttp://dev.mysql.com/doc/refman/5.5/en/any-in-some-subqueries.html
\n\n\n\n当与表达式列表一起使用时,IN 和 = ANY 不是同义词。IN 可以采用表达式列表,但 = ANY\n 不能。请参见第 11.3.2 节,\n \xe2\x80\x9c 比较函数和运算符\xe2\x80\x9d。
\n
归档时间: |
|
查看次数: |
7478 次 |
最近记录: |