嗨QuerySyntaxException我在查询中使用CAST()

时间:2014-04-04 10:43:21

标签: sql hibernate

我从我的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吗?

1 个答案:

答案 0 :(得分:2)

正如documentation所说,我们可以使用

cast(... as ...), where the second argument is the name of a Hibernate type

所以你应该试试

AND CAST(contact.id as string) like :id