2017-07-30 70 views
2

我剛剛發現,當我要存儲在我的MongoDB,與休眠ogm,列表這成爲一個集(所以沒有重複)。 我該如何避免它? 以下是我聲明的字段:我聲明一個列表,但休眠實例一套

@ElementCollection private List<Double> doubles; 

例如, 我有這樣的名單:[0.1 0.1 0.1 0.3] 當我要保存,它becames [0.1 0.3]

的escamotage是這樣定義的集合:

@ElementCollection private Map<Integer,Double> doubles; 

但這種結構過於複雜,在我的情況下,我必須把很長的矢量,它可能是一個問題!

回答

0

您應該能夠指定Hibernate將在映射中使用的集合的類型

檢查出documentation - 它提供XML映射樣本,報價:

除了標籤如實施例7.4中,也有列表「使用 映射一個集」,地圖,袋, array和 基元數組映射元素。

此外,檢查出Hibernate - Bag Mappings

例如在功能NHibernate您可以使用映射.AsBag().AsSet()擴展方法來表示,如果你想有一個bag語義,即無序 序列與重複。

this blog postthis blog postNHibernate的

在本質上使用此示例,您流暢的映射可能看起來像這樣

public YourClassMap : ClassMap<YourClass> 
{ 
    public YourClassMap() 
    { 
    HasMany<double>(x => x.doubles) 
     .AsBag() 
     .Access.CamelCaseField(); 
... 

你的XML映射會是這個樣子

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="YourNamespace" assembly="YourAssembly"> 
    <class name="YourClass" table="YourTableName"> 
    ... 
    <bag name="doubles" table="Doubles"> 
     <one-to-many class="Double"/> 
    </bag> 

對不起,僅提供了示例N休眠,這是我每天的工作,你應該能夠相當容易地應用這個在休眠以及

+0

謝謝,但我從來沒有用XML映射過一個實體。雖然我嘗試,但我收到一個錯誤。 雖然有點扭曲。畢竟,我問一點。 –

+0

@ Daniel-san,您能否提供您收到的錯誤?也許你正試圖使用​​的組件映射。 – ironstone13

+1

錯誤是意大利語,但實際上它說 MyClass不需要屬性。我們正在討論dependencies.xml,對吧? –