Estou confuso. Emmanuel Bernard escreveu em ANN-418 que
@Lob
são preguiçosos por padrão (ou seja, você nem precisa usar o @Basic(fetch = FetchType.LAZY)
anotação). Alguns usuários relatam que o carregamento lento de um
@Lob
não funciona com todos os drivers/banco de dados
. Alguns usuários relatam que funciona ao usar instrumentação de bytecode (javassit? cglib?).
Mas não consigo encontrar nenhuma referência clara de tudo isso na documentação.
No final, a solução alternativa recomendada é usar um mapeamento um-para-um "falso" em vez de propriedades. Remova os campos LOB de sua classe existente, crie novas classes referentes à mesma tabela, mesma chave primária e apenas os campos LOB necessários como propriedades. Especifique os mapeamentos como um para um, fetch="select", lazy="true". Desde que seu objeto pai ainda esteja em sua sessão, você deve obter exatamente o que deseja. (basta transpor isso para anotações).