Hibernate:如何映射与一组复杂对象的一对多关联?
Posted
技术标签:
【中文标题】Hibernate:如何映射与一组复杂对象的一对多关联?【英文标题】:Hibernate: How do i map an one-to-many association with a complex set of objects? 【发布时间】:2011-12-08 03:50:34 【问题描述】:我有一个数据库模型,其中有两个表处于一对多关联中。例如,我将它们称为 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】:我可以做这样的关系(双向关系):
班级篮子
@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;
【讨论】:
以上是关于Hibernate:如何映射与一组复杂对象的一对多关联?的主要内容,如果未能解决你的问题,请参考以下文章