1

R2DBC は現在、複合キーをサポートしていません。今のところ、多対多の関係をどのように実装できるのだろうか?

たとえば、次の 2 つのエンティティがあるとします。

@Table
class Item(
  @Id var id: Long?,
  var title: String,
  var description: String,
)

@Table
class Tag(
  @Id
  var id: Long?,
  var title: String,
  var color: String,
)

およびそれらのスキーマ:

CREATE TABLE item (
    id                  SERIAL PRIMARY KEY  NOT NULL,
    title               varchar(100)        NOT NULL,
    description         varchar(500)        NOT NULL
);

CREATE TABLE tag (
    id                  SERIAL PRIMARY KEY  NOT NULL,
    title               varchar(100)        NOT NULL,
    color               varchar(6)          NOT NULL
);

多対多マッピング用のテーブルを作成できます。

CREATE TABLE item_tag (
    item_id bigint  NOT NULL,
    tag_id  bigint  NOT NULL,
    PRIMARY KEY(item_id, tag_id)
);

ItemTagしかし、kotlin/java でマッピング クラスをどのように定義すればよいのでしょうか。

@Table
class ItemTag(
  // ??????????????????????? @Id ?????????????????????
  var itemId: Long,
  var tagId: Long,
)

それとも省略しても@Idいいですか?Repositoryそれでは、クラスには何もありませんか?それでいいと思います。これが唯一の意味ですか?

4

1 に答える 1