Java 使用hibernate从数据库访问值时获取异常
我有两个表website\u availability和status\u codes。它们之间有外键关系。status\u codes是父表。我正在使用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
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值