如何处理与 Spring 数据 JDBC 的多对多关系中的元数据?

How to deal with metadata in a Many-To-Many relationship with Spring Data JDBC?

我有一个项目,其中 bot_users 在 game_tables 中播放。所以我有一个连接 table。我还将 buy_in(玩家在 table 处可用的点数)存储在该连接 table 中。我的 SQL:

CREATE TABLE bot_users (
    user_id bigint PRIMARY KEY,
    free_points bigint CHECK (free_points >= 0),
    frozen_points bigint CHECK (frozen_points >= 0)
);

CREATE TABLE game_tables (
    channel_id bigint PRIMARY KEY,
    owner bigint REFERENCES bot_users(user_id),
    in_game boolean NOT NULL
);

CREATE TABLE game_tables_participants (
    game_table_id bigint REFERENCES game_tables(channel_id),
    participant_id bigint REFERENCES bot_users(user_id),
    buy_in bigint NOT NULL,
    PRIMARY KEY (game_table_id, participant_id)
);

我现在的问题是:如何在 Java 中的实体中表示 buy_in 元数据?如果 buy_in 不存在,我将简单地拥有一个 ParticipantRef,其中我将在 GameTable 实体中拥有一个 Set,然后拥有对那里的 ID 起作用的方法.但是我也想在代码中使用 buy_in,那么我是否应该创建一个包含 buy_in 的类似于 ParticipantRef 的实体?如果是,那么坚持它如何工作?

您提出的解决方案几乎可以做到这一点。 ParticipantRefBotUsersuserId 不同,它还具有 buyIn 属性。

因为你有一个从 GameTable 通过 SetParticipantRef 的对象引用,它将被认为是 GameTable-Aggregate 的一部分,并且只要你坚持一个GameTable实例。