2014-09-01 74 views
0

我正在使用JPA和Hibernate。對於在我的應用程序中定義的實體,我使用註釋,但有些實體作爲第三方代碼而沒有任何映射。因此,我必須通過XML映射他們(至少我覺得我必須):JPA XML映射文件中的Hibernate特定配置

<entity-mappings ...> 
    <access>FIELD</access> 

    <mapped-superclass class="com.acme.common.model.Request"> 
     <attributes> 
      <id name="id"/> 
     </attributes> 
    </mapped-superclass> 
</entity-mappings> 

由於這是JPA映射,它的工作原理除了一個案例很大,我必須使用Hibernate特定的自定義類型映射PostgreSQL的uuid類型爲java.util.UUID

使用註釋,這是小菜一碟:

@Entity 
public class Partner { 
    @Id 
    @Type(type = "org.hibernate.type.PostgresUUIDType") 
    private UUID id = IdGenerator.generate(); 
} 

的問題是,我無法弄清楚如何通過XML這樣做。

我考慮過使用Hibernate的原生XML映射,但它似乎不支持映射超類。

+0

[休眠的可能重複:從核心API切換到JPA API而無需重寫映射](http://stackoverflow.com/questions/11305204/hibernate-switch-from-core-api-to-jpa-api-without-rewriting-mapping) – zbig 2014-09-01 11:58:55

+0

似乎並不重複 – ben75 2014-09-01 15:13:55

回答

1

JPA映射僅支持其本機API。您需要使用hbm文件。

你將不得不遷移到與物業如HBM映射文件:

退房此處瞭解詳情:http://docs.jboss.org/hibernate/orm/3.6/quickstart/en-US/html/hibernate-gsg-tutorial-basic.html

+0

是否意味着我無法像使用註釋一樣使用XML來獲得最佳效果?我的意思是,我可以結合JPA和Hibernate註釋。通過切換到Hibernate XML,這是否意味着我將不得不放棄像映射超類一樣的JPA功能? – 2014-09-03 18:46:48

+0

您可以擁有JPA功能,但您只需要使用Hibernate映射。我從來沒有聽說過允許hbm文件導入orm(僅限jpa)文件的功能。 – uaiHebert 2014-09-03 20:26:37