2012-05-01 24 views
3

这是一个有趣的头刮脸器,可以开始五月份的休息!为什么hibernate的getPropertyNames返回一个空列表,如果所有属性都是键的一部分?

我有一个像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以外至少有一处房产,我没有任何问题。我所拥有的解决方法是在id之外添加一个虚拟字段(yuck!),并突然一切正常。

任何想法为什么发生这种情况,我能做些什么来解决它?

在此先感谢您的帮助!

+0

那么,经过一些更多的研究后,我明白'getPropertyNames()'只会返回非ID项目,并且它似乎没有类似的ID函数......所以,看起来我可能只是被卡住 :( – pennstatephil

回答

0

经过进一步挖掘,我发现getIdentifierType()getIdentifierPropertyName()做这项工作。对于像这样的组合键,我检查类型以查看它是否为CompositeCustomType或ComponentType的实例,如果是,则将其放入临时变量中,并在该临时变量上调用getPropertyNames()

相关问题