2012-12-17 4 views
0

두 개의 테이블이 있습니다. Customers와 Commands는 클라이언트에서 명령까지 @OneToMany 관계입니다. 한 클라이언트는 많은 명령을 가지고 있습니다. 테이블 명령에는 idCommand, date, nameCommande, idCustomer이 포함됩니다. 테이블 고객은 idCustomer, nameClient, email을 포함합니다. 모든 JPA와 EJB가 설정되었고 관리 빈에서 HQL 쿼리를 사용하여 명령 또는 클라이언트 목록을 쉽게 얻을 수 있으며이 코드를 사용하여 JSP로 나열 할 수 있습니다.joint가있는 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; 
} 

어떻게 클라이언트 대신 자신의 ID의 이름을 표시하는 방법으로 idCustomer 열이 두 테이블을 조인합니까? 나는이 HQL 쿼리

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

을 사용했습니다하지만 나는 결과를 얻기 위해 사용해야하는 List<> 유형에 대한 아무 생각이 없다/

+0

@AndroidLearner : "JSF", "EJB", "JPA", "JSP"등과 같은 API/라이브러리/프레임 워크/소프트웨어 이름은 ** 코드가 아닙니다 **! 코드 형식을 지정하지 마십시오. 코드에서 실제로 코드에서 사용하는 구만 서식을 지정하십시오. – BalusC

+0

@BalusC : 나는 내 마음 속에 간직 할 것이다. 당신의 소중한 제안에 감사드립니다 ... :) – AndroidLearner

답변

1

당신이 Commande 기업에 대한 역의 관계를 매핑합니다. ..

public class Commande { 
    ... 

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

    // getter and setter ... 
} 

(여기서, mappedBy가 의 타측 설정된 @OneToMany 속성의 이름을 얻고 관계)

그런 다음 Commande 객체의 목록을 얻을 것이다, 그 중 각각에 대해 다음을 사용하여 클라이언트의 이름을 얻을 수 SELECT c FROM Commande c 쿼리 실행 한 후 : thisCommande.getClient().getName()합니다.

+0

, 그 일을 지금, 많은 감사를 얻었다. – user1709976