2015-04-10 1 views
0

Je migre l'ancien code Hibernate 2.x vers 4.x. Une des classes est un UserType entre octet [] et Blob, et le code fait quelque chose comme ceci:Récupère LobHelper à partir d'un contexte UserType

public void nullSafeSet(...) { 
    ... 
    Blob blob = Hibernate.createBlob(bytes); 
    ... 
} 

Dans 4.x Mise en veille prolongée, Hibernate.createBlob ne j'existe plus, donc besoin d'utiliser session.getLobHelper().createBlob(bytes), mais Je ne sais pas comment obtenir un LobHelper d'une session car je n'ai pas Session, seulement SessionImplementor:

public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor implementor) { ... 

Répondre

0

j'ai découvert la classe ContextualLobCreator(LobCreationContext), et que SessionImplementor implémente LobCreationContext, donc je essentiellement converti

Blob blob = Hibernate.createBlob((byte[]) value); 

à

Blob blob = new ContextualLobCreator(implementor).createBlob((byte[]) value);