当前位置: 首页 > 知识库问答 >
问题:

Spring data mongodb@DBREF列表

穆宏胜
2023-03-14

我试图使用@dbref在模型中创建一个列表,但我无法使其工作。这是我的用户模型:

@Data
@Document
public class User {

    @Id
    @JsonSerialize(using = ToStringSerializer.class)
    private ObjectId id;

    @Indexed(unique = true)
    @NotBlank
    private String email;

    @NotBlank
    private String name;

    @NotBlank
    private String password;

    @DBRef
    private List<Server> servers;
}

服务器型号:

@Data
@Document
public class Server {

    @Id
    @JsonSerialize(using = ToStringSerializer.class)
    private ObjectId id;

    @NotBlank
    private String name;

    @NotBlank
    private String host;
}

结构非常简单,每个用户可以有多个服务器。但是,当我向用户添加服务器时,服务器就创建了,但是servers数组包含一个null条目(“servers”:[null])。因此服务器不会添加到用户中。这就是我如何创建服务器并将其添加到用户:

@PostMapping
public Mono create(@Valid @RequestBody Server server, Mono<Authentication> authentication) {
    return this.serverRepository.save(server).then(authentication.flatMap(value -> {
        User user = (User) value.getDetails();
        user.getServers().add(server);

        return userRepository.save(user);
    })).map(value -> server);
}

所以我只需创建并保存一个服务器,将服务器添加到用户,然后保存用户。但不管用。我一直有一个数组,其中有一个null项。

我所有的库都来自Spring Boot版本2.0.0.m6

更新当从用户的servers属性中删除@dbref时,将保存服务器,但它们当然会在server集合和每个user.servers中双重创建。所以错误与引用有关。

共有1个答案

梁丘飞鸾
2023-03-14

经过一番搜索,我找到了答案…
https://jira.spring.io/browse/datamongo-1583
https://jira.spring.io/browse/datamongo-1584

反应蒙哥不支持这一点。

 类似资料:
  • 我写代码时遇到了麻烦,这将允许以一种简单明了的方式获取用户和索赔细节。这是我的MongoDB结构, 我的实体类是: 索赔类别: 我有一种方法可以按名称获取用户,如下所示, 如果我尝试使用这个方法,会得到一个错误, 找不到能够从类型<code>org.bson.types转换的转换器。ObjectId以键入 所以我更改了我的用户实体类,如下所示, 而不是

  • 我的应用程序使用Spring Boot/JPA/MongoDB。 我使用以下方法将域类映射到MongoDB 但找不到如何使我的DBRef字段唯一。

  • Mongoose似乎不支持Mongo DBREF。显然,他们发布了“dbref”支持,但它实际上只是简单的引用(不具备引用不同集合中的文档的能力)。我终于创建了一个模式,允许我保存ObjectID引用的数组并填充它们,这对于我的模式的某些部分是很好的,但是如果我可以使用适当的DBREF创建一个数组,允许我引用来自多个集合的文档,那将是非常方便的。 幸运地(?)有一个模块可以在Mongoose中修补

  • 本文向大家介绍SpringDataMongoDB多文档事务的实现,包括了SpringDataMongoDB多文档事务的实现的使用技巧和注意事项,需要的朋友参考一下 一、安装MongoDB4.0.3(××) 1.1、官方安装文档 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 1.2、tar.gz包下载地址 h

  • 问题内容: 我在MongoDB中的规范化数据模型结构中遇到以下错误: 这是由于以下原因造成的: 具体的部分。我的文档中有一个DBRef对象,因此我可以引用另一个集合中的文档。嵌入式文档结构不是选项。那么我该如何解决呢? 问题答案: 您必须为其导入DBRef编解码器才能进行打印,如果您希望以文档json样式进行打印,则需要编写自己的DBRef编解码器,并将其添加到您给toJson()的编解码器中。

  • 我有一个名为和的类,其中拥有作为引用的。当它不是列表时,我可以传递URI引用以及以下示例。但我怎么做当一个清单?如果有人能帮助我,我很感激 没有getter和setter的实体 细静脉 阿根西亚 静脉储存库 Agencia存储库