3

这是一个有趣的令人头疼的问题,开始五月!

我有一个像这样的休眠映射:

<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()返回一个空列表。如果在 之外至少有一个属性composite-id,我没有任何问题。我有一个笨拙的解决方法是在 id 之外添加一个虚拟字段(糟糕!),突然一切正常。

知道为什么会发生这种情况以及我能做些什么来解决它吗?

在此先感谢您的帮助!

4

1 回答 1

0

经过进一步挖掘,我找到getIdentifierType()getIdentifierPropertyName()完成了这项工作。对于像这样的复合键,我检查类型以查看它是 CompositeCustomType 还是 ComponentType 的实例,如果是,则将其放入临时 var,并调用getPropertyNames()该临时 var。

于 2012-05-02T17:35:06.653 回答