0

我有两个表:客户和命令,这是@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<>我需要使用哪种类型来获得结果/

4

1 回答 1

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

于 2012-12-17T11:53:21.010 回答