【发布时间】:2014-07-14 03:09:14
【问题描述】:
我需要模拟客户和促销之间的关系。 我们需要关于客户促销分数的历史记录 CLIENTS_PROMOTIONS_HISTORY 和当前分数 CLIENTS_PROMOTIONS
DB 建模很好,但我发现很难为实体建模。 我打算仅将 CLIENTS_PROMOTIONS 表用于关系目的,以便客户可以了解他们的促销活动 + 每个促销活动的当前分数。但不知道在哪里存储当前分数。
实体和图表:
@Entity
@Table(name = "CLIENTS")
@SecondaryTable(name = "CLIENTS_PROMOTIONS",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "ID_CLIENT"))
class Client {
@Id
@Column(name = "ID_CLIENT", nullable = false, unique = true)
Long id;
@OneToOne(cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "ID_USER", nullable = false, unique = true)
User user;
@Column(name = "NAME", nullable = false)
String name;
@Column(name = "BIRTHDAY", nullable = false)
Date birthday;
@Column(name = "EMAIL", nullable = false)
String email;
@Column(name = "SEX", nullable = false)
Character sex;
@ManyToMany
@JoinTable(name = "CLIENTS_PROMOTIONS",
joinColumns = @JoinColumn(name = "ID_CLIENT"),
inverseJoinColumns = @JoinColumn(name = "ID_PROMOTION"))
Set<Promotion> promotions;
}
-
@Entity
@Table(name = "PROMOTIONS")
class Promotion {
@Id
@Column(name = "ID_PROMOTION", nullable = false, unique = true)
Long id;
@Column(name = "ID_ESTABLISHMENT", nullable = false)
Long establishmentId;
@Column(name = "TITLE", nullable = false)
String title;
@Column(name = "LIMIT_SCORE", nullable = false)
Long limitScore;
@Column(name = "DESCRIPTION", nullable = false)
String description;
@Column(name = "REWARD", nullable = false)
String reward;
}
【问题讨论】:
标签: java hibernate jpa modeling