2012-12-17 62 views
0

我有兩個表:Customers和Commands,它是@OneToMany從客戶端到命令的關係,一個客戶端有很多命令。 表格命令包含:idCommand, date, nameCommande, idCustomer。 該表客戶包含:idCustomer, nameClient, email。 所有JPA和EJB都已設置,我可以很容易地在託管bean中使用HQL查詢獲取命令或客戶端列表,並使用此代碼將它們列入JSP中。從HQL查詢中獲取對象列表

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

@AndroidLearner:API /庫/框架/軟件名稱,如「JSF」,「EJB」,「JPA」,「JSP」等是**不**代碼!請停止將它們格式化爲代碼。只能格式化您在代碼中真正用作代碼的短語。 – BalusC

+0

@BalusC:我會保持在我的腦海裏。感謝您寶貴的建議...... :) – AndroidLearner

回答

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

+0

明白了,現在工作,非常感謝 – user1709976