Hibernate如何映射这个?

时间:2012-03-27 06:33:30

标签: java hibernate

我还在努力解决这个问题:

Hibernate database mapping

很抱歉改写和重新发布...

一旦我尝试实施它们,我的想法根本就不起作用。最大的问题是PK / FK字段似乎不兼容。这是我想到的两张表:

Campaign
  PK Long   campaignId
     String description

Promotion
  PK Long   campaignId (FK to Campaign)
  PK Long   discount   (unique set of discounts for the campaign)
     String messgge

(每个广告系列都有很多促销活动)

问题是没有Campaign对象就不能存在促销。使用promotionIds非常繁琐。我真正需要的是在对象模型中拥有单个Campaign对象,我只需访问与之关联的Promotions集。每个促销都只有折扣和与之相关的消息。如下所示:

class Campaign {
  Long campaignId;
  String description;
  Set<Promotion> promotions;

  // constructors, getters, setters
}

class Promotion {
  int discount;
  String message;

  // constructors, getters, setters
}

这一切都可能吗?如何使用标准JPA注释使用Hibernate映射?只要我能拥有上述对象模型,我就不再关心表映射了。

请...... :(


修改

我使用促销方面的@ElementCollection并将促销从@Entity更改为@Embeddable。这很好用,正是我需要的。但是,现在审计工作因Envers拒绝使用列表而中断。

我知道Promotion表中的campaignId和折扣是唯一的,但我该如何告诉Envers?

1 个答案:

答案 0 :(得分:0)

Campaign课程中,您可以使用以下方式映射Promotion的最简单案例:

@OneToMany(mappedBy = "promotions")
public Set<Promotoion> getPromotions() {
  return promotions;
}

关于如何使用@OneToMany,请参阅12