MyBatis many-to-many через аннотации

Предположим, есть следующая структура БД (для конкретики - postgreSQL).
пользователи, чаты и связь между ними:

CREATE TABLE public.users (
    id int8 NOT NULL,
    "name" varchar(50) NOT NULL,
    CONSTRAINT users_pk PRIMARY KEY (id)
);
CREATE TABLE public.chats (
    id int8 NOT NULL,
    "name" varchar(50) NOT NULL,
    CONSTRAINT chats_pk PRIMARY KEY (id)
);
CREATE TABLE public.user_chat_relation (
    user_id int8 NOT NULL,
    chat_id int8 NOT NULL,
    CONSTRAINT user_chat_relation_fk FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT user_chat_relation_fk_1 FOREIGN KEY (chat_id) REFERENCES public.chats(id) ON DELETE CASCADE ON UPDATE CASCADE
);

Хотелось бы без написания ручками прямых запросов вида "выбрать все чаты для этого пользователя" иметь возможность использовать описанные отношения как-то так:

@Data
public class User{
  private Long id;
  private String name;

  private List<Chat> chats; // вот так
}

@Data
public class Chat{
  private Long id;
  private String name;

  private List<User> users;
}

К сожалению, весьма немногие (и довольно старые) примеры описывают отношения many-to-many только через xml, хотя судя по документации - myBatis поддерживает аннотации (хоть и не в таком объеме, как xml). Лучшее из найденного - myBatis annotations, но там one-to-many.

Что и как нужно прописать в мапперах (возможно - не только в них) при помощи аннотаций, чтобы получить возможность работы схожим образом с @ManyToMany из Hibernate? Крайне желательно, чтобы решение поддерживало ленивую загрузку.

P.S. на всякий случай: Spring Boot 2.6.2, Java 17, mybatis-spring-boot-starter 2.2.0


Ответы (0 шт):