2008-12-02 6 views
1

J'utilise Hibernate 3.1 et Oracle 10 DB. Le blob est défini comme @Lob @Basic @Column dans l'entité Hibernate qui correspond à la table DB appropriée. L'erreur -java.sql.SQLException: Closed Connection- semble apparaître une fois dans l'intervalle, et non dans toutes les tentatives d'obtention du blob à partir de la base de données. Cela ressemble à un problème de récupération d'hibernation, donc j'ai pensé à spécifier le type de fetch à utiliser - EAGER semble correct dans ce cas - mais je ne trouverais aucun moyen de spécifier le type de récupération pour le type d'objet @Column (il y a un moyen de le faire pour les collections/"un à plusieurs" relations etc)Erreur "Session fermée" lors de la tentative d'obtention d'un blob à partir de DB en utilisant getBinaryStream()

J'apprécierais votre aide, merci.

Répondre

0

J'ai récemment implémenté un système d'hibernation sur une base de données Oracle 11g utilisant des blobs. Il n'y a pas de vraie magie à cela. La cause standard des erreurs d'hibernation 'Session fermée' est (pour ne pas signaler l'évidence) que la session à laquelle votre entité est attachée est vraiment fermée.

Établissez un point de travail exactement où et quand la session est ouverte et fermée. Cela peut ne pas être complètement évident si vous utilisez AOP ou un ressort pour gérer cela pour vous.

En outre, je suis sûr que vous avez besoin d'une transaction ouverte, ou au moins une connexion db avec autocommit désactivé.

Gareth

1

Est-ce par rapport à une base de données Oracle?

J'ai dû recourir à des types de données utilisateur dans Hibernate pour que cela fonctionne, mais c'était en utilisant Hibernate 3.0 contre un Oracle 9 db. Voir http://www.hibernate.org/56.html pour une longue discussion sur ce sujet

0

Si vous souhaitez spécifier l'utilisation de la stratégie enjoués:

@Basic(fetch = FetchType.LAZY) 

pour votre membre.

0

La définition de la propriété système hibernate.jdbc.use_streams_for_binary = true peut s'avérer utile.

Questions connexes