Hibernate отображает ManyToOne в дочернем объекте в поле в составном ключе родительского объекта - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть класс BookEntity, у которого составной идентификатор состоит из id и publishedDate столбцов в таблице Book.

Затем у меня есть класс BookMetaDataEntity, который имеет собственный идентификатор metaDataId.

Связь состоит в том, что в одной книге много строк метаданных.BookEntity объединяет BookMetaDataEntity в первом столбце id со вторым столбцом bookId.И наоборот, я также определяю JoinColum для второй сущности.

BookEntity.java

@Entity
@Table(name = "Book")
public class Book {
    @EmbeddedId
    private CompositeId compositeId;

    @Column(name = "author")
    private String author;

    @OneToMany(cascade = CascadeType.DETACH, fetch = FetchType.LAZY, targetEntity = BookMetaDataEntity.class)
    @JoinColumn(name = "id", referencedColumnName = "bookId", insertable = false, updatable = false)
    private List<BookMetaDataEntity> metaData;
}

CompositeId.java

@Embeddable
public class CompositeId implements Serializable {
    @Column(name = "id")
    private int id;

    @Column(name = "publishedDate")
    private int publishedDate;
}

BookMetaDataEntity.java

@Entity
@Table(name = "BookMetaData")
public class BookMetaDataEntity {
    @Id
    @Column(name = "metaDataId")
    private int metaDataId;

    @Column(name = "bookId")
    private int bookId;

    @Column(name = "attribute")
    private String attribute;

    @Column(name = "value")
    private String value;

    @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY, targetEntity = BookEntity.class)
    @JoinColumn(name = "bookId", referencedColumnName = "id", insertable = false, updatable) 
    private Book book;
}

Проблема : referencedColumnNames (id) объекта BookMetaDataEntity.book, ссылающегося на BookEntity, не сопоставлен с одним свойством.

Объединение происходит только на id = bookId, поскольку таблица BookMetaData не имеет столбца publishedDate.

Как мне сопоставить дочернюю сущность споле в составном ключе родительского объекта?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...