У меня есть несколько ролей, пользователи и приложения Я хочу создать отображение в спящий режим из этой таблицы:Hibernate: Как присоединиться к 3 таблицам в одной таблице соединений с помощью аннотации?
CREATE TABLE role_application_user (
role_identifier INTEGER not null,
application_identifier INTEGER not null,
user_identifier INTEGER not null,
KEY FK_role_identifier (role_identifier),
KEY FK_application_identifier(application_identifier),
KEY FK_user_identifier (user_identifier),
CONSTRAINT FK_role_identifier FOREIGN KEY (role_identifier) REFERENCES role (identifier),
CONSTRAINT FK_application_identifier FOREIGN KEY (application_identifier) REFERENCES application (identifier),
CONSTRAINT FK_user_identifier FOREIGN KEY (user_identifier) REFERENCES users (login)
);
для приложения, роль может иметь много пользователей, и пользователь может многих ролей.
Я стараюсь это отображение:
Application.java
@JoinTable(name = "role_application_user",
joinColumns = @JoinColumn(name = "application_identifier"),
inverseJoinColumns = @JoinColumn(name = "user_identifier"))
@MapKeyJoinColumn(name = "role_identifier")
@ElementCollection
private Map<Role, User> userByRole = new HashMap<>();
К сожалению, это не работает в моем случае, потому что в Java, ключ от карты должен быть уникальным.
С помощью этого сопоставления у нас может быть только один пользователь для роли и приложения.
Вот ваш ответ https://developer.jboss.org/thread/168634?tstart=0 – Sitansu
вы получили решение? – Rajesh