2011-12-06 3 views
5

オブジェクトの更新時にHibernateの第2レベルのキャッシュキーを複製しようとすると、奇妙なケースを発見しました。Hibernateレプリケーションの問題 - セッションを本当に複製する必要がありますか?

キャッシュキー構造は、このようなものです:私はここで見ることができます

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 

問題はcacheKey.type.typeScopeが終わっ複製されますローカルo.h.i.SessionFactoryImplへの参照を持っているということです。 typeScope(またはその祖先の1つ)は、一時的なものとして宣言されませんか?

クラスを見ると、このクラスではtypeScope属性はまったく使用されていませんが、コンストラクタで設定され、保持されていることがわかります。これはHibernateのバグですか?

注:o.h.t.ComponentTypeは、エンティティが複合キーを持ち、そのエンティティに特殊な識別子オブジェクトを使用する場合に使用されます。

私たちは、Hibernate v3.6.7とEhcache v2.4.4を使用します。これもHibernate Users forumに掲載されています。

編集: HHH-6880を開きました。

私はEhcache users mailing listにも同様のメッセージを投稿しています。Alex @ Terracottaはこれが本物の問題だと示唆しました。バージョン3.6でHHH-5182によって導入された可能性があります。 hibernate-dev threadへのリンクがあります。

答えて

0

Hibernateチームのように見えるのは、これが4.0.1で解決されたと感じています。HHH-6822を修正しました。

関連する問題