我有两个表: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<>
类型来获得结果/
答案 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()
。