Случай использования типа Fetch для @ManyToOne и @LazyToOne - PullRequest
0 голосов
/ 03 января 2019

Если атрибут FetchType.LAZY установлен для @ManyToOne аннотации -

//use case 1
@ManyToOne(fetch = FetchType.LAZY)  

нужно ли использовать @LazyToOne аннотацию вместе с @ManyToOne? -

//use case 2
@ManyToOne
@LazyToOne(LazyToOneOption.PROXY)

Или Варианты использования 1 и 2 эквивалентны друг другу?

1 Ответ

0 голосов
/ 03 января 2019

В случае сопоставления «многие к одному», да, эти 2 случая будут эквивалентны

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

Но этого не произошло бы для сопоставления «один к одному».Вам нужно будет использовать

@OneToOne(optional = false, fetch = FetchType.LAZY)

в качестве эквивалентной версии

Причина этого заключается в том, что отображаемая сущность ДОЛЖНА знать, должно ли свойство ассоциации содержать прокси-объект или NULL, и не можетопределите это, посмотрев на столбцы своей базовой таблицы из-за того, что один-к-одному обычно отображается через общий PK, поэтому его нужно в любом случае с нетерпением извлекать, делая прокси бессмысленным

Подробнее см. Здесь подробности о том, как работает отложенная загрузка для сопоставления «один к одному» и «многие к одному».

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