【问题标题】:@ManyToMany extra column@ManyToMany 额外列
【发布时间】: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


    【解决方案1】:

    您需要为 Client_Promotions 创建一个 Entity 并模拟此 EntityPromotionClient 的关系 @ManyToOne > 实体,而不是 @ManyToMany

    【讨论】:

    • @DaviArimateia 不幸的是我认为是的,因为这不是一个单一的连接表......你有一个需要实体来反映其价值的字段。
    • 我明白了 =( 确实有道理!如果有人需要实施此解决方案,这是我的建议 stackoverflow.com/questions/5127129/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2019-03-09
    • 2017-09-18
    • 2010-11-12
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多