我有两个表website_availability和status_codes.And这些表之间有foriegn密钥关系.status_codes是父表。我正在使用hibernate。我需要在加入后从这些表中“列出”值。我遵循这段代码。< / p>
List<WebsiteAvailability>list=new ArrayList<WebsiteAvailability>
String selquery="select w.statusCode,w.updateTime,w.statusCodes.statusCodeValue from WebsiteAvailability w,StatusCodes s where w.statusCodes.statusCode=s.statusCode and w.url=?";
//here hibernate generates the POJO classes and these are having foriegn key relation so WebsiteAvailability is having private StatusCodes statusCodes.So I am accessing statuscodevalue of statuscodes table using w.statusCodes.statusCodeValue.
PreparedStatement ps=con.prepareStatement(selquery);
ps.setString(1,selUrl);
rs=ps.executeQuery();
while(rs.next())
{
list.add(new WebsiteAvailability(rs.getString("statusCode"),rs.getTimestamp("updateTime"),rs.getString("statusCodeValue")));
}
return list;
}
首先我可以将结果集与hibernate一起使用。有没有替代方案。因为我正在使用?占位符我应该使用预定义的setString()。和executeQuery()来获取list.I需要值列表我怎么能得到。我得到空列表。错误是什么?
org.hibernate.QueryException:无法解析----- WebsiteAvailability ---
的属性statusCode在hibernate映射文件中,我检查了区分大小写。仍然无法解析属性异常
答案 0 :(得分:1)
您正在尝试使用JDBC语句执行HQL查询,使用Hibernate实体作为SQL查询。这没有意义。 HQL查询由Hibernate Session执行。不是JDBC。如果您正在使用Hibernate,则不再需要JDBC(除非在某些极端情况下需要原始JDBC性能,例如批处理)。
阅读有关HQL query execution的文档。您还必须修复您的查询,因为它似乎不正确。它包含w.statusCode
和w.statusCodes
。它还使用等式语句进行连接,并从两个实体中进行选择,而不是简单地使用隐式或显式连接。这些也在the documentation中解释。