Однонаправленный @OneToOne с @MapsId не работает с отложенной загрузкой - PullRequest
3 голосов
/ 09 марта 2020

Я хочу отобразить ассоциацию @OneToOne с использованием Hibernate 5.3.10 и JPA.

Я знаю, что родительская сторона ассоциации @OneToOne не может быть загружена лениво, если не используются улучшения байт-кода.

В этом случае я хочу только сопоставить клиентскую сторону и использовать @MapsId связь, которая предлагается здесь: Лучший способ сопоставить один-единственный

Вот мое отображение на Сторона клиента. Родительская сторона CardEntity вообще не имеет сопоставления с DeviceType.

public class DeviceType {

    @Id
    @Column( name = "PRODUCT_CARD_TYPE_ID" )
    private Long cardTypeId;

    ...

    @OneToOne( fetch = FetchType.LAZY )
    @MapsId
    @JoinColumn( name = "PRODUCT_CARD_TYPE_ID" )
    private CardEntity card;

    ....
}

Я даю ему дополнительный @JoinColumn, поскольку столбец KEY в CardEntity имеет имя, отличное от "PRODUCT_CARD_TYPE_ID". См. Столбец изменения идентификатора

. Для этого сопоставления загрузка LAZY не работает. Он всегда выполняет другой оператор для извлечения CardEntity. Что я тут не так делаю?

1 Ответ

2 голосов
/ 09 марта 2020

Похоже, это ЧЧХ-12842 . Описанный подход отлично работает в спящем режиме 5.4. Но это не работает в ветке hibernate 5.3.

...