首页 > 解决方案 > 如何使用 Spring Data JDBC 处理多对多关系中的元数据?

问题描述

我有一个项目,bot_users 在哪里玩game_table。所以我有一个连接表。我还将buy_in(桌上玩家可用的点数)存储在该连接表中。我的 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)
);

我现在的问题是:如何buy_in在 Java 中的实体中表示元数据?如果buy_in不存在,我会简单地在实体中ParticipantRef拥有一个,然后在其中拥有适用于 ID 的方法。但我也希望在代码中可用,所以我应该创建一个包含? 如果是,那么坚持它如何工作?SetGameTablebuy_inParticipantRefbuy_in

标签: javaspringspring-dataspring-data-jdbc

解决方案


您提出的解决方案几乎就是这样做的方法。ParticipantRef它不仅具有 a userIdBotUsers而且还具有一个buyIn属性。

GameTable由于您有一个通过 aSet到 the的对象引用,ParticipantRef因此它将被视为 GameTable-Aggregate 的一部分,并在您持久化GameTable实例时被持久化。


推荐阅读