2011-12-06 8 views
5

He descubierto un caso extraño al intentar replicar una clave de caché de segundo nivel de Hibernate después de la actualización del objeto.Problemas de replicación de Hibernate: ¿la sesión realmente necesita ser replicada?

estructura clave El caché es así:

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 

El problema que veo aquí es que cacheKey.type.typeScope tiene una referencia a la o.h.i.SessionFactoryImpl local que obtiene replicado terminado. ¿Debería declararse typeScope (o uno de sus antepasados) como transitorio?

Al observar la clase o.h.t.ComponentType, puedo ver que el atributo typeScope no se utiliza en absoluto en esta clase, sino que solo se establece en el constructor y se conserva. ¿Es esto un error de Hibernate?

NOTA: o.h.t.ComponentType se usa cuando la entidad tiene una clave compuesta y usa un objeto identificador especial para ella.

Usamos Hibernate v3.6.7 y Ehcache v2.4.4. Esto también se ha publicado en el Hibernate Users forum.

EDIT: Abrí HHH-6880, sin mucho éxito hasta ahora.

También he publicado un mensaje similar al Ehcache users mailing list y Alex @ Terracotta sugirió que este era un problema real, probablemente introducido por HHH-5182 en la versión 3.6 y que también afecta cosas como la serialización Ehcache en el disco. Aquí hay un enlace al hibernate-dev thread.

Respuesta

0

Parece que el equipo de Hibernate siente que esto se ha resuelto en la versión 4.0.1, al arreglar HHH-6822.

Cuestiones relacionadas