2011-12-08 65 views
0

我有一個DB模型,其中有一對多關聯中的兩個表。舉例來說,我會稱它們爲BALL和BASKET,即使它沒有多大意義。休眠:我如何映射與一組複雜對象的一對多關聯?

一個籃子可以容納很多球,一個球可以放在一個籃子裏。

在領域模型中,我有一個Ball類,一個帶getter和setter的簡單類,我有一個Basket類。我還有一個「BallGroup」類,這是一個檢索球的策略模式實現。

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; 
}