gpt4 book ai didi

mongodb - 我声明了一个 List 但 hibernate 实例是一个 Set

转载 作者:可可西里 更新时间:2023-11-01 10:49:01 26 4
gpt4 key购买 nike

我刚刚发现,当我要存储在我的 mongodb 中时,使用 hibernate ogm,一个列表变成了一个集合(所以没有重复)。我怎样才能避免它?这是我声明该字段的方式:

@ElementCollection private List<Double> doubles;

例如,我有这个列表:[0.1 0.1 0.1 0.3]当我要存储时,它变成了 [0.1 0.3]

一个 escamotage 将定义一个像这样的集合:

@ElementCollection private Map<Integer,Double> doubles;

但是这个结构不必要地复杂,在我的例子中,我必须放置很长的向量,这可能是个问题!

最佳答案

您应该能够指定 Hibernate 将在映射中使用的集合的类型

查看 documentation - 它提供了 xml 映射示例,引用:

Apart from the tag as shown in Example 7.4, “Mapping a Set using ”, there is also list, map, bag, array and primitive-array mapping elements.

另外,查看 Hibernate - Bag Mappings

例如,在 Fluent NHibernate 中,您可以在映射上使用 .AsBag().AsSet() 扩展方法来指示您是否想要一个包语义,即无序 有重复的序列。

参见 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>

很抱歉只提供了NHibernate 的示例,这是我每天都在使用的东西,您应该也可以很容易地在 Hibernate 中应用它

关于mongodb - 我声明了一个 List 但 hibernate 实例是一个 Set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45403388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com