Связь баз данных и вложенные классы

Не могу никак найти нормальный туториал как решить мою проблему есть 3 модели

@Entity
public class User {
 
    @Id
    private Long id;
 
    private String name;
    private String picture;
 
    private List<Chat> chatList;
}
@Entity
public class Chat {
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
 
    private Long count;
 
    private List<Message> messageList;
}
public class Message {
 
    private String name;
    private String picture;
    private String text;
    private LocalDateTime dateTime;
 
}

Хочу их связать для сохранения в бд, так как List это не примитивы сам в SpringBoot новичок


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

Автор решения: Alexandr

Как-то так:

@Entity
public class User {

    @Id
    private Long id;

    private String name;
    private String picture;

    @ManyToMany
    @JoinTable(
            name = "user2chat",
            joinColumns = @JoinColumn(name = "user_id"),
            inverseJoinColumns = @JoinColumn(name = "chat_id"))
    private List<Chat> chats;

    @OneToMany(mappedBy="user")
    private List<Message> messages;
}

@Entity
public class Chat {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private Long count;

    @ManyToMany
    private List<User> users;

    @OneToMany(mappedBy="chat")
    private List<Message> messages;
}

@Entity
public class Message {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String picture;
    private String text;
    private LocalDateTime dateTime;

    @ManyToOne
    @JoinColumn(name="chat_id", nullable=false)
    private Chat chat;

    @ManyToOne
    @JoinColumn(name="user_id", nullable=false)
    private User user;

}

Можете посмотреть тут и тут

→ Ссылка