我正在使用以下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。