3

5 月のオフを始めるための楽しいヘッド スクラッチャーをご紹介します。

次のような休止状態のマッピングがあります。

<hibernate-mapping default-lazy="false">
  <class name="my.class.name" table="MY_CLASS_TABLE">
     <composite-id>
       <key-property name="prop1" column="PROP_1" />
       <key-property name="prop2" column="PROP_2" />
       <key-property name="prop3" column="PROP_3" />
     </composite-id>
   </class>
</hibernate-mapping>

そして、クラス名とプロパティの「辞書」を調べて構築する関数。このクラスに到達するまで問題はありません。何らかの理由で、への呼び出しgetPropertyNames()は空のリストを返します。の外側に少なくとも 1 つのプロパティがあればcomposite-id、問題はありません。私が持っている厄介な回避策は、id の外側にダミー フィールドを追加することです (うん!) すると、突然すべてが機能します。

なぜこれが起こっているのか、それを解決するために何ができるのか考えていますか?

よろしくお願いします。

4

1 に答える 1

0

さらに掘り下げた後、私は仕事を見つけgetIdentifierType()て実行しました。getIdentifierPropertyName()このような複合キーの場合、タイプをチェックしてそれが CompositeCustomType または ComponentType のインスタンスであるかどうかを確認し、そうである場合は一時変数にスローし、getPropertyNames()その一時変数を呼び出します。

于 2012-05-02T17:35:06.653 に答える