0

Customers と Commands の 2 つのテーブルがあります。これ@OneToManyは Client から Commands への関係であり、1 つのクライアントには多くの Commands があります。テーブル コマンドには次のものが含まれますidCommand, date, nameCommande, idCustomer。テーブル customers には以下が含まれます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;
}

idCustomerID ではなくクライアントの名前を表示する方法で、列を使用して 2 つのテーブルを結合するにはどうすればよいですか? この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 に答える