我刚刚发现,当我要使用hibernate ogm存储在我的mongodb中时,列表会成为一个集合(因此不会重复)。 我怎么能避免呢? 以下是我宣布该领域的方式:
@ElementCollection private List<Double> doubles;
例如, 我有这个清单:[0.1 0.1 0.1 0.3] 当我要去商店时,它会成为[0.1 0.3]
escamotage将定义这样的集合:
@ElementCollection private Map<Integer,Double> doubles;
但是这个结构不必要地复杂,在我的情况下,我必须放很长的向量,这可能是个问题!
答案 0 :(得分:0)
您应该能够指定Hibernate将在映射中使用的集合的类型。
查看documentation - 它提供xml映射样本,引用:
除了示例7.4“使用映射映射集合”中所示的标记之外 “,还有列表,地图,包,数组和 原始数组映射元素。
另外,请查看Hibernate - Bag Mappings
例如在 Fluent NHibernate 中,您可以在映射上使用.AsBag()
和.AsSet()
扩展方法来指示您是否需要包语义,即无序
序列与重复。
有关在 NHibernate
中使用此功能的示例,请参阅this blog post和this blog post从本质上讲,您的流畅映射可能看起来像这样
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 Hibernate的示例,这是我每天使用的内容,您应该能够在Hibernate中轻松应用此功能