Hibernate 3.6 classMetaData公开复合id类?

时间:2012-02-02 00:24:32

标签: hibernate hibernate-mapping

说,我的hibernate-mapping有以下条目

<class name="foo.Person" table="person" lazy="false">  
    <composite-id name="personId" class="foo.PersonId">
        <key-property name="FIRST_NAME" type="string" column="FIRST_NAME"/>    
        <key-property name="LAST_NAME" type="string" column="FIRST_NAME"/>    
    </composite-id>
    <property name="AGE" type="int" node="AGE" column="AGE"/>
</class>  

有没有办法可以使用org.hibernate.metadata.ClassMetadata或其子类如AbstractEntityPersister SingleTableEntityPersister来查找复合id类名“foo.PersonId”?我虽然应该很容易,但即使在调试模式下检查ClassMetaData对象,我也找不到它。我可以使用getIdentifierPropertyName和getPropertyColumnNames来查找personId和FIRST_NAME以及LAST_NAME,但是无法获得类名“foo.PersonId”。

我注意到org.hibernate.cfg.Configuration有getClassMappings,我可以看到foo.PersonId在那里,但我使用Spring初始化hibernate SessionFactory而且我不使用cfg.xml,所以我不知道如何获取我需要的配置实例。

1 个答案:

答案 0 :(得分:0)

ClassMetaData c;
c.IdentifierType.ReturnedClass;