JPA OneToMany The Many с той же моделью и той же колонкой

Article.java

@OneToMany
@JoinColumn(name = "refId", referencedColumnName = "id")
private List<Attachment> attachmentList;

Book.java

@OneToMany
@JoinColumn(name = "refId", referencedColumnName = "id")
private List<Attachment> attachmentList;

Attachment.java

private String refId

Статья и книга имеют много вложений и объединяются с одной колонкой "refId". Вложение Entity, как кодировать?

1 ответ

Решение

Для меня это не имеет особого смысла: как я могу узнать, просматривая запись вложения, является ли это книгой или статьей, на которую ссылается столбец refId? У вас должны быть отдельные столбцы для хранения отношений Attachment to Book и Article.

Если Book и Article совместно используют ключ, то есть Book и Article должны совместно использовать родительский класс, тогда он должен выглядеть примерно так:

class Document {
    @Id
    Long id;

    @OneToMany
    List<Attachment> attachments;
}

class Article extends Document {
    //....
}

class Book extends Document {
    //....
}
Другие вопросы по тегам