Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用hibernate从数据库访问值时获取异常_Java_Hibernate_Postgresql - Fatal编程技术网

Java 使用hibernate从数据库访问值时获取异常

Java 使用hibernate从数据库访问值时获取异常,java,hibernate,postgresql,Java,Hibernate,Postgresql,我有两个表website\u availability和status\u codes。它们之间有外键关系。status\u codes是父表。我正在使用hibernate。加入后,我需要这些表中的值的“列表”。我正在遵循此代码 List<WebsiteAvailability>list=new ArrayList<WebsiteAvailability> String selquery="select w.statusCode,w.updateTime,w.statusC

我有两个表website\u availability和status\u codes。它们之间有外键关系。status\u codes是父表。我正在使用hibernate。加入后,我需要这些表中的值的“列表”。我正在遵循此代码

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;

}
Listlist=newarraylist
String selquery=“从网站Availability w、statusCodes s中选择w.statusCode、w.updateTime、w.statusCodes.statusCodeValue,其中w.statusCodes.statusCode=s.statusCode和w.url=?”;
//在这里,hibernate生成POJO类,这些类具有外键关系,因此WebsiteAvailability具有私有状态代码StatusCodes。因此,我使用w.StatusCodes.statuscodevalue访问StatusCodes表的statuscodevalue。
PreparedStatement ps=con.prepareStatement(selquery);
ps.setString(1,selUrl);
rs=ps.executeQuery();
while(rs.next())
{
添加(新网站可用性(rs.getString(“statusCode”)、rs.getTimestamp(“updateTime”)、rs.getString(“statusCodeValue”));
}
退货清单;
}
首先,我可以将resultset与hibernate一起使用。是否有其他替代方法。因为我正在使用?占位符我应该使用setString()和executeQuery()的preparedstatement来获取列表。我需要值列表如何获取。我获取的是空列表。错误是什么

org.hibernate.QueryException:无法解析------WebsiteAvailability的属性statusCode---


在hibernate映射文件中,我检查了大小写敏感度。仍然无法解决属性异常

您正在尝试使用JDBC语句执行HQL查询,将hibernate实体作为SQL查询。那没有道理。HQL查询由Hibernate会话执行。而不是JDBC。如果您使用的是Hibernate,您就不再需要JDBC(除非在某些情况下需要原始JDBC性能,比如批处理)


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

您会遇到例外情况,但我们似乎没有。神秘的例外是什么?(请在您的PostgreSQL安装中显示异常的确切文本以及
select version()
的输出)首先,您得到的异常是什么?发布堆栈跟踪什么是异常?请添加completet堆栈跟踪。但是,您的结果集应该是网站可用性列表。在select查询中,它采用的是“?”。它没有采用我从servlet传递的selUrl值。在这个程序中,我尝试打印selUrl,它给出了正确的提供值。但是?不接受selUrl值