在hibernate查询的连接中返回的对象类型是什么

时间:2013-05-02 05:02:52

标签: java hibernate

当我有以下查询时,它会给我一个产品清单。

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();

5 个答案:

答案 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()方法。希望这能澄清情况。