2012-04-02 7 views
4

私は注釈とともにSpringとHibernateを使用しています。私がマッピングファイルで明示的にクラスとプロパティを定義し、I以来ない限り、これは動作しないようですいくつかのデバッグ後hibernate 'default-cascade'プロパティをグローバルに設定する

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping default-cascade="all"/> 

:私は私のマッピングファイル内でこのようなすべてのクラスのdefault-cascadeプロパティを設定したいです私は本当にそれを避けたいと思っています。プロパティを明示的に指定せずにdefault-cascadeをグローバルに設定することはできますか?

+0

それはどういう意味ですか?あなたのケースは何ですか? – erimerturk

+0

カスケードスタイルは、すべてのクラスおよびフィールド(CASCADE注釈で明示的に注釈を付けられたものを除く)では "なし"のままです。すべてのクラスとプロパティを明示的に注釈付け(またはマッピングファイルで指定)する必要なしに、カスケードをデフォルトとして「すべて」にします。 – Alex

答えて

1

設定オブジェクトで設定できます。擬似コード

config = buildHibernateConfiguration(); 

for (ClassMap clazz : config.getClassMappings()) 
{ 
    clazz.getPropertyIterator(); 
} 
+0

それを試してみました(ただし、SpringからHibernate Configurationオブジェクトを取得するのはちょっと難解でした)。すべてのプロパティのカスケード値を「すべて」に設定しますが、効果がないようです。いくつかの低レベルのデバッグの後、Property.cascadeフィールドは 'AbstractEntityPersister'クラスのコンストラクタでのみ使用されるように見えます(エンティティのすべてのカスケード情報をプライベートフィールドに格納します)。後ではありません。 – Alex

+0

entitypersistorは、後でbuildSessionfactoryで作成する必要があります。 AFAIKは設定オブジェクトに存在しません。また、アソシエーション(参照、コレクション)だけがカスケード設定を持つことができますが、それ以外の場合は無視されます。 clazz.collectionIteratorを使用してコレクションを取得する – Firo

関連する問題