У меня есть три таблицы: user
, group
и membership
. Таблица membership
- это объединяющая таблица пользователей и групп, поскольку пользователи могут быть членами нескольких групп и наоборот.
У меня есть приложение Spring Boot, в котором я хотел бы получить доступ к группам определенный пользователь.
Класс пользователя
@Entity
public class User {
/* members */
@OneToMany
@JoinTable(
name = "membership",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "group_id")
)
private Set<Group> groups;
public Set<Group> getGroups() {
return groups;
}
/* getters, setters */
}
Групповой класс
@Entity
public class Group {
/* members */
@OneToMany
@JoinTable(
name = "membership",
joinColumns = @JoinColumn(name = "group_id"),
inverseJoinColumns = @JoinColumn(name = "user_id")
)
private Set<User> users;
public Set<User> getUsers() {
return users;
}
/* getters, setters */
}
Использование
Integer id;
User user = userRepository.findById(id).get();
Set<Group> groups = user.getGroups();
Когда я отлаживаю код, я получаю следующую ошибку:
Unable to evaluate the expression Method threw 'org.hibernate.exception.SQLGrammarException' exception.
Я новичок в Spring Boot и Hibernate.
Спасибо.