Hay mucho que se puede encontrar sobre este google un poco, pero no he encontrado una solución viable para este problema.Cargando una clob holgazaneamente en hibernación
Básicamente lo que tengo es un gran CLOB en una clase en particular que quiero haber cargado a pedido. La forma ingenua de hacer esto sería:
class MyType {
// ...
@Basic(fetch=FetchType.LAZY)
@Lob
public String getBlob() {
return blob;
}
}
eso no funciona, sin embargo, al parecer debido al hecho de que estoy usando controladores de Oracle, es decir, objetos Lob no son tratados como manijas simples pero siempre están cargados. O eso me han hecho creer por mis incursiones. Hay una solución que usa instrumentación especial para la carga de propiedades perezosas, pero como los documentos de Hibernate parecen sugerir que están menos que interesados en hacer que funcione correctamente, así que prefiero no seguir esa ruta. Especialmente con tener que ejecutar un pase de compilación extra y todo.
Así que la siguiente solución que tenía previsto era separar este objeto a otro tipo y definir una asociación. Lamentablemente, aunque los documentos proporcionan información contradictoria, es evidente para mí que la carga diferida no funciona en las asociaciones de OneToOne con la clave primaria compartida. Establecí un lado de la asociación como ManyToOne, pero no estoy muy seguro de cómo hacerlo cuando hay una clave primaria compartida.
¿Alguien puede sugerir la mejor manera de hacerlo?
¿Podría aclarar por qué no funciona con Oracle? – skaffman
He desarrollado un poco ese aspecto, no estoy del todo seguro de cuál es el problema exacto (un poco vago en los detalles). Si el problema es con el mapeo, ¿podría dar uno que debería cargar perezoso el clob correctamente? – wds
Si lo intentó con Oracle y falló, ¿cómo falló? – skaffman