我从我的java类运行这个hibernate查询。但是我得到了QuerySyntaxException.But我没有发现任何问题。
查询
SELECT count(contact.id)
FROM Contact contact
WHERE contact.id IN (
SELECT DISTINCT action.contact
FROM Action action
WHERE action.status = 'O'
AND action.currentAssignee = :currentAssignee)
AND contact.contactStatus IN :contactStatus
AND CAST(contact.id as char(12)) like :id --Note this line
AND contact.issue.productGroup IN :productGroup
但问题在于使用CAST。
错误:
期待CLOSE,发现'(' 获取countOpenContacts时出错。 java.lang.IllegalArgumentException:org.hibernate.hql.ast.QuerySyntaxException:期待CLOSE,找到'('
以下java代码已用于设置id。(contact.id为Long值,contactId为字符串。)
query.append("AND CAST(contact.id as char(12)) like :id ");
params.put("id",(contactId+ "%"));
我们可以在hibernate查询中进行CAST吗?
答案 0 :(得分:2)
正如documentation所说,我们可以使用
cast(... as ...), where the second argument is the name of a Hibernate type
所以你应该试试
AND CAST(contact.id as string) like :id