Есть много, что можно найти об этом поиске, но я не нашел подходящего решения этой проблемы.
По сути, у меня есть большой CLOB для определенного класса, который я хочу загрузить по требованию. Наивный способ сделать это будет:
class MyType {
// ...
@Basic(fetch=FetchType.LAZY)
@Lob
public String getBlob() {
return blob;
}
}
Это не работает, хотя, по-видимому, из-за того, что я использую драйверы oracle, то есть объекты Lob не обрабатываются как простые дескрипторы, но всегда загружаются. Или так, что меня заставили поверить из моих набегов. Есть одно решение, которое использует специальные инструменты для отложенной загрузки свойств, но, как видно из документов Hibernate, они менее чем заинтересованы в том, чтобы заставить это работать правильно, поэтому я бы не стал идти по этому пути. Особенно с необходимостью выполнить дополнительный проход компиляции и все.
Итак, следующее решение, которое я предполагал, - это выделение этого объекта другому типу и определение ассоциации. К сожалению, хотя документы содержат противоречивую информацию, для меня очевидно, что отложенная загрузка не работает при связях OneToOne с общим первичным ключом. Я бы определил одну сторону ассоциации как ManyToOne, но я не совсем уверен, как это сделать, когда есть общий первичный ключ.
Так кто-нибудь может предложить лучший способ сделать это?