如何处理与 Spring 数据 JDBC 的多对多关系中的元数据?
How to deal with metadata in a Many-To-Many relationship with Spring Data JDBC?
我有一个项目,其中 bot_user
s 在 game_table
s 中播放。所以我有一个连接 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
的实体?如果是,那么坚持它如何工作?
您提出的解决方案几乎可以做到这一点。 ParticipantRef
与 BotUsers
的 userId
不同,它还具有 buyIn
属性。
因为你有一个从 GameTable
通过 Set
到 ParticipantRef
的对象引用,它将被认为是 GameTable-Aggregate 的一部分,并且只要你坚持一个GameTable
实例。
我有一个项目,其中 bot_user
s 在 game_table
s 中播放。所以我有一个连接 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
的实体?如果是,那么坚持它如何工作?
您提出的解决方案几乎可以做到这一点。 ParticipantRef
与 BotUsers
的 userId
不同,它还具有 buyIn
属性。
因为你有一个从 GameTable
通过 Set
到 ParticipantRef
的对象引用,它将被认为是 GameTable-Aggregate 的一部分,并且只要你坚持一个GameTable
实例。