Hibernate: Как мне сопоставить связь один-ко-многим со сложным набором объектов? - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть модель БД, в которой есть две таблицы в ассоциации «один ко многим».В качестве примера я назову их ШАР и КОРЗИНА, даже если в этом нет особого смысла.

В корзине может быть много шаров, а шар может быть в одной корзине.

ВМодель предметной области У меня есть класс Ball, простой класс с геттерами и сеттерами, и у меня есть класс 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 голосов
/ 08 декабря 2011

Ну, я могу сделать отношения вот так (Двунаправленное отношение):

Корзина классов {

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

Класс Ball:

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