2009-12-22 71 views
1

嘿人,我有以下的地圖*這是給我造成許多麻煩:測繪地圖<接口,接口>與Hibernate

Map<MetricSourceInterface, AliasesInterface> 

MetricSourceInterface是簡單屬性的實體。 AliasesInterface是一個只有一個Id和一個字符串列表的實體。

Hibernate正在創建數據庫模式,所以改變它沒有任何問題。

在一個側面說明,這是試圖映射一個子問題:

Map<MetricSourceInterface, List<String>> 

有誰知道解決這個正確的方法是什麼?

的Theres這只是一個限制,我不想提前:)


*創建AliasesInterface或用戶類型列表

THX與pstanton的校正:)

+0

'地圖'不是'集合' – pstanton 2009-12-22 01:38:04

+0

@pstanton - 地圖不是'java.util.Map'沒有擴展java.util.Collection接口的集合。 'Map' **是**,但是,「Java Collections」框架和'Map'的一部分肯定是從Hibernate的角度來看的一個集合 - 相同的persister/loader等等...... – ChssPly76 2009-12-22 03:19:54

+0

這不是一個好問題的標題。 – cherouvim 2011-03-16 15:00:21

回答

4

由於編輯只要AliasesInterface確實是一個實體 Hibernate的意義上,真的沒有問題,這與映射:

@OneToMany(targetEntity=AliasInterface.class) 
@MapKeyManyToMany(targetEntity=MetricSourceInterface.class, [email protected](name="metric_source_id")) 
private Map<MetricSourceInterface, AliasesInterface> myMap; 

請注意,上面假設AliasInterfaceMetricSourceInterface都是實體;如果它們確實是接口,則需要引用它們的具體實現。

請記住,@MapKeyManyToMany是Hibernate對JPA的限制。有關mapping collections are in Hibernate docs的更多詳情/示例。

更新:使用XML映射文件相同的方法:

<map name="myMap"> 
    <key column="owner_id"/> <!-- FK to owner entity table --> 
    <map-key-many-to-many column="metric_source_id" class="MetricSourceInterface"/> 
    <one-to-many class="AliasesInterface"/> 
</map> 

more details hereother examples here

+0

是的,即時通訊工作與他們的具體實現,因爲你評論。 請問,如果沒什麼問題,請將註釋翻譯成HBT sintax?我不熟悉它們。 – mcabral 2009-12-22 01:39:02

+0

Thx很多爲您的答案和時間。 – mcabral 2009-12-22 04:09:01