2013-01-31 65 views
1

我越来越想运行这个Hibernate查询,如果出现以下错误:的Hibernate查询:无法解析属性

could not resolve property: candidateID of: result [select SUM(A.Points) from answer A Left Join A.Results R where R.candidateID = '465b4eb2-c306-4092-8914-d272b5a70b11'] 
QueryString  select SUM(A.Points) from answer A Left Join A.Results R where R.candidateID = '465b4eb2-c306-4092-8914-d272b5a70b11' 

代码

select SUM(A.Points) 
from answer A 
Left Join A.Results R 
where R.candidateID = '1234' 

然而,candidateID是结果,所以我不明白这个错误。

回答

1

除了Java类和属性的名称以外,HQL查询是不区分大小写的。所以org.hibernate.eg.FOO不是org.hibernate.eg.Foo。尝试更改查询中的类和属性的大小写。还要验证候选ID的大小写。

select SUM(A.points) from Answer A Left Join A.results R where R.candidateID = '465b4eb2-c306-4092-8914-d272b5a70b11'] 
1

实体Results没有名为candidateID的字段。在HQL查询中,应该使用持久化属性(类中的〜字段)的名称而不是数据库列的名称。

1

我不知道休眠模式,但如果这是正常的SQL这一行是不完整的:

Left Join A.Results R 

您必须指定一个加入条件,如

Left Join A.Results R on a.candidateID = R.candidateID 
+0

这确实似乎不是真的[在HQL的情况下](http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-joins)。 –

相关问题