2011-11-12 8 views
0

、多くのリンカテーブルに多くの。休止状態:<strong>お客様</strong>、<strong>CustomerProductLinker</strong>と<strong>製品</strong>:私は期待通常の列を持つ3つのテーブルを持っている場合は最高のオブジェクト指向設計

そして、私はこれを行うに私のJavaコードにしたい:私の3つの事業体がどのように見えるし、それぞれの中のそれぞれのコレクションは、具体的にgetProducts()方法だろうか

Customer customer = myService.getCustomer(id); //calls hibernate session 
List<Product> customerProducts = customer.getProducts(); 

を?またはHQLという名前のクエリを使用する方が良いでしょうか?

私はjavaコードから(hibernate confのcreateオプションを使用して)databseテーブルを作成していますので、テーブルdesginを変更することができます。

答えて

1

@JoinTableを使用して@ManyToManyの関係を試してください。顧客には製品のセット(またはリスト)があります。製品には顧客のセット(またはリスト)があります。

@Entity 
public class Customer { 
    @ManyToMany(cascade= CascadeType.ALL) 
    @JoinTable(name="customer_product", 
       joinColumns={@JoinColumn(name="customer_id")}, 
       inverseJoinColumns={@JoinColumn(name="product_id")}) 
    private Set<Product> products = new HashSet<Product>(); 
    ... 

@Entity 
public class Product { 
    @ManyToMany 
    @JoinTable(name="customer_product", 
       joinColumns={@JoinColumn(name="product_id")}, 
       inverseJoinColumns={@JoinColumn(name="customer_id")}) 
    private Set<Customer> customers = new HashSet<Customer>(); 
    ... 
0

wannikのようなエンティティを設定します。簡単に保つようにしてください。名前付きクエリを使用し始めると、より多くの作業をしているだけで、特定のケースをカバーしています。

関連する問題