0

我有两个表 website_availability 和 status_codes。它们之间有外键关系。status_codes 是父表。我正在使用休眠。加入后我需要这些表中的值的“列表”。我正在关注这段代码。

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;

}

首先,我可以将结果集与休眠一起使用。有没有其他选择。因为我正在使用?占位符我应该为 setString() 使用preparedstatement。并执行Query() 来获取列表。我需要值列表如何获取。我得到空列表。错误是什么?

org.hibernate.QueryException:could not resolve the property statusCode of -----WebsiteAvailability---

在休眠映射文件中,我检查了是否区分大小写。仍然无法解决属性异常

4

1 回答 1

1

您正在尝试使用 JDBC 语句执行 HQL 查询,处理 Hibernate 实体,作为 SQL 查询。那没有意义。HQL 查询由 Hibernate Session 执行。不是通过 JDBC。如果您使用的是 Hibernate,则不再需要 JDBC(除非在某些极端情况下您需要原始 JDBC 性能,例如批处理)。

阅读有关HQL 查询执行的文档。您还必须修复您的查询,因为它看起来不正确。它包含w.statusCodew.statusCodes。它还使用相等语句进行连接并从两个实体中进行选择,而不是简单地使用隐式或显式连接。这些也在文档中进行了解释。

于 2013-05-22T13:27:25.337 回答