当我有以下查询时,它会给我一个产品列表。
List<Product>=
getCurrentSession().createQuery("SELECT p FROM Product p ").list();
当有如下连接时它会返回什么。
getCurrentSession().createQuery("SELECT p FROM Product p inner join ProductCategory pc where p.id=pc.id").list();
结果应该返回List<Object[]>
。请看这个线程
你应该访问你的实体,比如
for (Object[]> result : query.list()) {
Product p = (Product) result[0];
ProductCategory pc = (ProductCategory) result[1];
}
SELECT p FROM Product p inner join ...
类似的东西会给你一个Product
s列表。
FROM Product p inner join ...
类似的东西会给你一个数组列表。
这将返回一个list
对象。您将不得不将它们投入到Product
List list = session.createQuery("SELECT p FROM Product p inner
join ProductCategory pc where p.id=pc.id").list();
根据 javax.persistence.Query 的文档,您将获得一个 List。为什么你认为它应该不同?
此类从 java.lang.object 转换为模型类在任何情况下都不起作用。下面是我的代码。
List<Contactinfo> listStudentInfo = new ArrayList<Contactinfo>();
//listStudentInfo = dataService.getAllStudent(studentInfo);
listStudentInfo = dataService.getStudentInfo();
System.out.println(listStudentInfo.size());
Contactinfo contactinfo = (Contactinfo)listStudentInfo.get(0);
但是在休眠中,如果您同时拥有通过@Many-to-one 或@One-to-one 连接注释关联的实体,则不需要连接。然后您只需要选择一个对象,您将自动通过连接访问其他对象。确保为加入字段保留 getter()、setter() 方法。希望这将澄清情况。