2011-12-08 8 views
0

私は一対多の関連付けに2つのテーブルがあるDBモデルを持っています。たとえあまり意味がないとしても、私はBALLとBASKETと呼んでいます。Hibernate:複雑なオブジェクトセットと1対多の関連付けをどのようにマッピングしますか?

バスケットは多くのボールを保持でき、ボールは1つのバスケットに入れることができます。

ドメインモデルでは、私はボールクラス、ゲッターとセッターを持つ単純なクラスがあり、私はバスケットクラスを持っています。私はボールを取得するための戦略パターンの実装でもある "ボールグループ"クラスを持っています。

public class Ball { 

    // getter and setters. 
    } 

    public interface IBallGroup { 

    List getBalls(String type); 
    } 

    public class BallGroupStrategyA { 

    private List balls; 

    List getBalls(String type) { 
     // StrategyA impl. 
    } 
    } 

    public class BallGroupStrategyB { 

    private Tree balls; 

    List getBalls(String type) { 
     // StrategyB impl. 
    } 
    } 

    public class Basket { 

    // How do i map the balls collection in this attribute? 
    private IBallGroup ballGroup; 
    } 

ボールのコレクションは本当にIBallGroupオブジェクトに格納されていますが、私は持っていないし、私のデータベースに「BallGroup」テーブルは必要ありません。

答えて

0

さて私はこのような関係(双方向リレーション)行うことができます。

クラスバスケット{

@OneToMany(targetEntity=Ball.class, 
orphanRemoval = true,cascade={javax.persistence.CascadeType.ALL}) 
@JoinColumn(name="id_ball") 
public Set<Ball> getBall() { 
    return ball; 
} 
public void setBall(Set<Ball> ball) { 
    this.ball = ball; 
} 
} 

クラスボール:

@ManyToOne 
@JoinColumn(name="id_basket", nullable=false) 
public Transportista getBasket() { 
    return basket; 
} 
public void setBasket(Basket basket) { 
    this.basket = basket; 
} 
関連する問題