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