Il y a beaucoup de choses que l'on peut trouver sur ce googling un peu mais je n'ai pas encore trouvé une solution réalisable à ce problème.Paresseusement charger un clob en hibernation
Fondamentalement, ce que j'ai est un gros CLOB sur une classe particulière que je veux avoir chargé à la demande. La façon naïve de le faire serait:
class MyType {
// ...
@Basic(fetch=FetchType.LAZY)
@Lob
public String getBlob() {
return blob;
}
}
qui ne fonctionne pas bien, apparemment en raison du fait que je utilise les pilotes d'oracle, à savoir des objets Lob ne sont pas traités comme des poignées simples mais sont toujours chargées. Ou alors j'ai été amené à croire de mes incursions. Il y a une solution qui utilise une instrumentation spéciale pour le chargement des propriétés paresseuses, mais comme les docs Hibernate semblent suggérer qu'ils ne sont pas intéressés à faire ce travail correctement, je préfère ne pas suivre cette voie. Surtout avec devoir exécuter une passe de compilation supplémentaire et tout. Donc la solution suivante que j'avais envisagée était de séparer cet objet à un autre type et de définir une association. Malheureusement, alors que les docs donnent des informations contradictoires, il est évident pour moi que le chargement différé ne fonctionne pas avec les associations OneToOne avec une clé primaire partagée. Je définirais un côté de l'association comme ManyToOne, mais je ne suis pas sûr de savoir comment le faire quand il y a une clé primaire partagée.
Donc, quelqu'un peut-il suggérer la meilleure façon de s'y prendre?
Pourriez-vous préciser pourquoi cela ne fonctionne pas avec Oracle? – skaffman
Je me suis étoffé un peu, je ne sais pas exactement quel est le problème exact (un peu vague sur les détails). Si le problème est avec le mapping, pourriez-vous en donner un qui devrait charger le clob correctement? – wds
Si vous l'avez essayé avec Oracle et qu'il a échoué, comment cela a-t-il échoué? – skaffman