2012-05-01 36 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()

相關問題