Я пытаюсь воспроизвести стену Facebook в Java EE.OneToMany JoinTable с не основным значением ключа
У меня есть 3 стола: Пользователь, почта, стена.
У пользователя есть имя пользователя (PK) и другие поля, сообщение имеет идентификатор (PK), автора (FK на пользователе) и некоторые другие. Стена является таблицей объединения между почтой и пользователем.
Дело в том, что проект компилируется только в том случае, если у меня есть на стене, как почта, так и пользователь как ПК. Имея сообщение имеет ПК и пользователя, так как значение, не равное нулю, не будет работать!
Но оба из них, как ПК, приводят к @ManyToMany, что означает, что тот же пост может быть на многих Стенах, что неверно!
Я пытался имея только пост, как ПК в стене и с помощью этого отображения:
Заголовок сообщения:
@JoinTable(name = "Wall", joinColumns = {
@JoinColumn(name = "id", referencedColumnName = "id")}, inverseJoinColumns = {
@JoinColumn(name = "user", referencedColumnName = "username")})
@OneToMany
private User user;
Пользователь:
@ManyToOne
private Collection<Post> onWall;
, но он говорит:
Целевой объект атрибута отношения [пользователь] по t его класс [class entity.Post] не может быть определен. Если вы не используете дженерики, убедитесь, что целевой объект определен в сопоставлении отношений.
Что случилось с моим картографированием? не
Я знаю, но мне кажется, что стена не является обычным объектом. Я имею в виду, что стена должна присоединиться к данным из Почты с данными от пользователя, поэтому я подумал, что это JoinTable! Разве нет способа сделать то, что я задал в своем вопросе? Спасибо за ответ btw :) – StepTNT
@StepTNT Отредактировано. – MaDa
Хорошая точка! :) Еще один вопрос. Не нужно ли новое поле в таблице «Стол» иметь как автора, так и владельца? – StepTNT