OneToMany с JoinTable и неуникальными идентификаторамиJAVA

Программисты JAVA общаются здесь
Anonymous
OneToMany с JoinTable и неуникальными идентификаторами

Сообщение Anonymous »

У меня есть странная настройка базы данных, которую я хотел бы сопоставить с помощью спящего режима, с пользователем таблицы и сообщением таблицы таблицы, с отношениями многие-ко-многим между ними, но отношения выполняется с помощью таблицы соединения, которая ссылается на первичный ключ пользователя, но не на первичный ключ сообщения, она ссылается на неуникальный столбец этой таблицы.
Мне удалось сопоставить его с помощью @ManyToMany() с приведенным ниже кодом, и, похоже, это работает, но мне интересно, хорошо ли ссылаться на неуникальный столбец или не следует, потому что это может сломаться в некоторых крайних случаях.

Код: Выделить всё

user (
id -- pkey
)

post (
id -- pkey
join_id -- non unique
)

user_posts (
user_id -- references user.id
post_join_id -- references post.join_id
)
В Java:

Код: Выделить всё

public class User {
@Id
long id;

@ManyToMany()
@JoinTable(
name = "user_posts",
joinColumns = @JoinColumn(
name = "user_id",
referencedColumnName = "id"
),
inverseJoinColumns = @JoinColumn(
name = "post_join_id",
referencedColumnName = "join_id"
)
)
Set
 posts;
}

public class Post {
@Id
long id;

long join_id;
}
Учитывая, что несколько сообщений имеют один и тот же join_id, правильный ли это способ сделать такое сопоставление? Я не могу найти много информации о таких объединениях неуникальных столбцов.
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/790 ... unique-ids

Вернуться в «JAVA»