2012-05-01 6 views
3

5 월을 시작하는 재미있는 머리 수 있습니다!모든 속성이 키의 일부라면 hibernate의 getPropertyNames는 빈리스트를 반환하는 이유는 무엇입니까?

<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 work-around는 id (yuck!) 외부에 더미 필드를 추가하여 갑자기 모든 것이 작동합니다.

왜 이런 일이 벌어지고 있으며 해결할 수있는 방법이 있습니까?

미리 도움 주셔서 감사합니다.

+0

글쎄, 좀 더 연구를 한 후에 나는'getPropertyNames()'가 비 (non) id 항목만을 반환한다는 것을 이해하며, ID와 유사한 함수가없는 것처럼 보인다. 붙어 있어야한다 :( – pennstatephil

답변

0

더 파고 난 후에 나는 getIdentifierType()getIdentifierPropertyName()가 직업을 찾는다 고 알았다. 이와 같은 복합 키의 경우 유형을 확인하여 CompositeCustomType 또는 ComponentType의 인스턴스인지 확인하고,있는 경우 임시 var에 던져서 해당 임시 var에 getPropertyNames()을 호출합니다.

관련 문제