当我有以下查询时,它会给我一个产品清单。
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();
答案 0 :(得分:3)
SELECT p FROM Product p inner join ...
类似的内容会为您提供Product
的列表。
FROM Product p inner join ...
这样的东西会给你一个数组列表。
答案 1 :(得分:2)
结果应该返回List<Object[]>
。请参阅this主题
你应该访问你的实体,如
for (Object[]> result : query.list()) {
Product p = (Product) result[0];
ProductCategory pc = (ProductCategory) result[1];
}
答案 2 :(得分:1)
这将返回list
个对象。您必须将它们转换为Product
List list = session.createQuery("SELECT p FROM Product p inner
join ProductCategory pc where p.id=pc.id").list();
答案 3 :(得分:0)
根据javax.persistence.Query的文档,您将获得一个List。为什么你认为它应该有所不同?
答案 4 :(得分:0)
从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);
但是在休眠状态下,如果你有两个实体与@Multi-to-one或@Ane-to-one连接注释相关联,则不需要连接。然后,您只需选择一个对象,您将通过连接自动访问其他对象。确保为连接字段保留getter(),setter()方法。希望这能澄清情况。