从带有关节的HQL查询中获取对象列表

时间:2012-12-17 11:34:28

标签: jpa ejb hql jointjs

我有两个表:Customers和Commands,它是从Client到Commands的@OneToMany关系,一个客户端有很多命令。 表命令包含:idCommand, date, nameCommande, idCustomer。 表客户包含:idCustomer, nameClient, email。 设置了所有JPA和EJB,我可以使用托管bean中的HQL查询轻松获取命令或客户端列表,并使用此代码将它们列在JSP中。

 public List<Commande> selectAllCommandes() {
    List<Commande> commandes = em.createQuery("select c from Commande c").getResultList();
      return commandes;
}
 public List<Customer> selectAllCustomers() {
    List<Customer> customers = em.createQuery("select cu from Customer cu").getResultList();
    return customers;
}

如何以idCustomer列的方式加入这两个表,以显示客户端的名称而不是他的ID?我已经使用过这个HQL查询

SELECT c.date, c.name Commande, cu.nameClient FROM Commande AS c, Customer AS cu WHERE cu.idCustomer = c.idCustomer

但我不知道我需要用List<>类型来获得结果/

1 个答案:

答案 0 :(得分:1)

如果您在Commande实体中映射反向关系...

public class Commande {
    ...

    @ManyToOne(mappedBy="commande")
    private Client client;

    // getter and setter ...
}

(此处,mappedBy正在获取@OneToMany属性的名称。 关系的另一面)

然后在执行查询SELECT c FROM Commande c之后,您将获得Commande个对象的列表,并且对于每个对象,您可以使用以下内容获取客户端的名称:thisCommande.getClient().getName()