这是一个有趣的头脑搔痒,从五月开始!
我有一个像这样的hibernate映射:
<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
之外至少有一个属性,我没有任何问题。我所拥有的kludgy解决方法是在id之外添加一个虚拟字段(yuck!)然后突然一切正常。
知道为什么会这样,我能做些什么来解决它?
提前感谢您的帮助!
答案 0 :(得分:0)
进一步挖掘后,我发现getIdentifierType()
和getIdentifierPropertyName()
完成了这项工作。对于像这样的复合键,我检查类型以查看它是否是CompositeCustomType或ComponentType的实例,如果是,则将其抛入临时var,并在该临时var上调用getPropertyNames()
。