HQL"存在"生成无效的SQL

时间:2012-03-21 10:04:01

标签: hibernate hql

我正在使用以下HQL来选择公司,只要它有员工:

from Company as c 
where c.companyKey = :companyKey 
and exists (from Employee as e where e.companyKey = c.companyKey)

在SQL中,“exists ...”部分通常被写为“exists(select * from ...”或“exists(从1中选择1)。”Hibernate生成的SQL“存在”(select employee1_ .company_key,employee1_.dept_key,...“ - 列出了引用表中的所有列。

这导致“java.sql.SQLException:',''附近的语法不正确”。我已经尝试直接执行生成的SQL,并且我已经确认错误是由列出“exists”使用的子查询中的几个列引起的。

我已经尝试在HQL子查询中指定一个列,但这似乎是无效的HQL语法(如果在Hibernate文档中有一个全面的HQL定义,而不是一些关于猫的模糊示例,那将会很有用) )。我正在使用Hibernate 3.2.1和Sybase ASE 11/12/15。

有人可以建议使用HQL语法来解决这个问题吗?显然使用原生SQL会很简单,但我不希望用多种策略污染DAO。

0 个答案:

没有答案