2014-10-17 39 views
0

我正在開發一個hibernate項目,其中有註釋和xml映射的實體。Hibernate Annotation/XML解決方法

這裏是設置,實體/類A是基於註釋的。

Class A 

@Id 
long id; 

我需要A類中的集合,它只能通過XML配置進行映射。我們無法爲我知道的給定實體混合使用註釋和xml。

但是,我可以創建一個包裝類,將其稱爲X,並使用集合xml配置爲X創建相應的XML映射,我將放入A?所以我們有:

Class A 

@Id 
long id; 

Object X; 

然後還有一個X.hbm.xml文件。注意這個文件將包含映射,以便制定來自說表B的列的集合,該列由A的主鍵(它是B中的外鍵)映射。因此,我猜它實際上必須引用表A和B.

此解決方法是否正常工作?似乎是一個長鏡頭...

回答

0

您可以嘗試映射文件(我用它們來重新定義「外部」實體的一些屬性)

的persistence.xml

<persistence-unit name="yourPersistenceUnit" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <mapping-file>META-INF/orm-custom.xml</mapping-file> 

ORM定製。 XML

<?xml version="1.0" encoding="UTF-8"?> 
<entity-mappings 
     xmlns="http://java.sun.com/xml/ns/persistence/orm" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd" 
     version="2.0"> 

    <entity class="your.Entity"> 
     <attributes> 
      <one-to-many name="attributes" fetch="LAZY"/> 
      <one-to-many name="answers" fetch="LAZY"/> 
     </attributes> 
    </entity> 
</entity-mappings> 
+0

下面是一些文檔:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/xml-overriding.html – Multisync 2014-10-17 09:22:19

+0

我有點糊塗了,所以您的解決方案允許我們覆蓋註釋thr呃XML?所以我可以有一個名爲「your.Entity」的所有註釋的類,並且此類的一個字段/屬性可以通過此orm-custom.xml文件重寫? – James 2014-10-17 19:30:53

+0

@詹姆斯,你最好參考文檔。其實,我做了你所問的。我在外部jar中有一個實體,這個實體使用EAGER作爲它的列表。爲了覆蓋這個,我使用了orm-custom.xml – Multisync 2014-10-17 19:38:25