java - Spring Data JDBC との多対多の関係でメタデータを処理するには?

okwaves2024-01-25  12

ボットユーザーがゲームテーブルでプレイするプロジェクトがあります。したがって、結合テーブルがあります。また、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)
);

私の質問は次のとおりです。Java のエンティティで buy_in メタデータをどのように表現すればよいでしょうか? buy_in が存在しない場合は、単純に ParticipantRef を用意し、その Set を GameTable エンティティに設定し、そこに ID を処理するメソッドを用意することになります。しかし、コード内でも buy_in を使用できるようにしたいので、buy_in を含む ParticipantRef のようなエンティティを作成する必要がありますか? 「はい」の場合、それを永続化するとどのように機能しますか?

通常、この投稿のように多対多の関係を 1 対多の 2 に分割します: codejava.net/frameworks/hibernate/…

– マルコ

2020 年 9 月 4 日 23:05



------------------------

あなたが提案したソリューションは、ほぼこれを実現する方法です。 BotUsers の userId のみを含む ParticipantRef を持つ代わりに、buyIn 属性も取得します。

ParticipantRef への Set を介して GameTable からオブジェクト参照があるため、それは GameTable-Aggregate の一部とみなされ、GameTable インスタンスを永続化するたびに永続化されます。

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。