Hibernate:我如何映射与一组复杂对象的一对多关联?

时间:2011-12-08 03:50:34

标签: java hibernate associations one-to-many pojo

我有一个数据库模型,其中一对多关联中有两个表。例如,我将它们称为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”表。

1 个答案:

答案 0 :(得分:0)

我可以做这样的关系(双向关系):

Class Basket {

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