2011-12-06 2 views
5

Ho scoperto un caso strano durante il tentativo di replicare una chiave di cache di secondo livello Hibernate all'aggiornamento dell'oggetto.Problemi di replica in ibernazione: la sessione deve davvero essere replicata?

La cache struttura chiave è così:

cacheKey = {org.hibernate.cache.CacheKey} 
|- key = {my.own.serializable.class} 
|- type = {org.hibernate.type.ComponentType} 
| |- typeScope = {org.hibernate.type.TypeFactory$TypeScopeImpl} 
| | |- factory = {org.hibernate.impl.SessionFactoryImpl} 
| |- propertyNames = {...} 
| |- propertyTypes = {...} 
| |- propertyNullability = {...} 
| |- propertySpan = 2 
| |- cascade = {...} 
| |- joinedFetch = {...} 
| |- isKey = true 
| |- tuplizerMapping = {...} 
|- entityOrRoleName = {java.lang.String} "my.Entity" 
|- entityMode = {org.hibernate.EntityMode} 
|- hashCode = 588688 

Il problema che possiamo vedere qui è che cacheKey.type.typeScope ha un riferimento locale o.h.i.SessionFactoryImpl che viene replicato sopra. Dovrebbe typeScope (o uno dei suoi antenati) non essere dichiarato come transitorio?

Guardando la classe o.h.t.ComponentType, posso vedere che l'attributo typeScope non viene utilizzato affatto in questa classe ma è impostato solo nel costruttore e tenuto in. È un errore Hibernate?

NOTA: o.h.t.ComponentType viene utilizzato quando l'entità ha una chiave composita e usa oggetto identificatore speciale per questo.

Utilizziamo Hibernate v3.6.7 e Ehcache v2.4.4. Questo è stato anche pubblicato su Hibernate Users forum.

EDIT: ho aperto HHH-6880, senza molto successo finora.

Ho anche inviato un messaggio simile allo Ehcache users mailing list e Alex @ Terracotta ha suggerito che si trattava di un problema reale, probabilmente introdotto da HHH-5182 nella versione 3.6 e che riguardava anche cose come la serializzazione di Ehcache su disco. Ecco un collegamento a hibernate-dev thread.

risposta

0

Sembra che il team di Hibernate si sente in questo è stato risolto in 4.0.1, fissando HHH-6822.

Problemi correlati