我正在尝试使用Hibernate Query Language从MySQL数据库中获取多条记录。在使用 query.find()和 query.list()几次尝试失败后,我发现问题出在我的查询中。但我不确定我的查询有什么问题。以下是获取记录的代码:
var linkG = link.enter()
.append('g')
.attr('class', 'link');
上述代码中唯一在我的控制台中打印的输出(使用@Override
@Transactional
public List<Paper> getPapersByCondition() {
// Query q = getHibernateTemplate().getSessionFactory().openSession().createQuery("select paperID, paperTitle, abstractOfThePaper, status from Paper where reviewerID is null");
// List<Paper> list = null;
// for(Object o : q.list()) {
// System.out.println("$$$$$$$$$$$$$$$$$$$$$");
// list.add((Paper)o);
// System.out.println(((Paper)o).getPaperTitle());
// }
// System.out.println("#################");
// System.out.println(list.size());
//return list;
List<Object> o = getHibernateTemplate().find("select paperID, paperTitle from Paper where reviewerID is null");
List<Paper> list = null;
for(Object one : o) {
System.out.println("$$$$$$$$$$$$$$$$$$$$$");
list.add((Paper)one);
System.out.println(((Paper)one).getPaperTitle());
}
System.out.println("#################");
System.out.println(list.size());
return list;
}
和query.list()
两种方法):
query.find()
运行上面的代码时,表中只有一条记录。 字段reviewerfeedback和reviewerid为空。
表格论文(映射到POJO类:论文)有以下字段:
paperid(int), papertitle(varchar), paperdatafile(blob), abstractofthepaper(varchar), status(varchar), reviwerfeedback(varchar), reviewerid(varchar)
请帮我解决上述问题。
提前致谢。
修改 我的POJO论文课程:
$$$$$$$$$$$$$$$$$$$$$
}
这是我在Chrome浏览器中执行相应的前端代码以显示提取的记录时出现的错误: org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是java.lang.ClassCastException: [Ljava.lang.Object;无法转换为com.GDP.test.model.Paper
java.lang.ClassCastException:[Ljava.lang.Object;无法转换为com.GDP.test.model.Paper
答案 0 :(得分:1)
行
中存在问题list.add((Paper)one);
one
不是Paper
原因select paperID, paperTitle
。它是一个数组[paperID, paperTitle]
。
你需要做这样的事情
List<Paper> papers = (List<Paper>)getHibernateTemplate().find("from Paper where reviewerID is null");