gpt4 book ai didi

java - Spring 数据 REST MongoDB : Retrieve objects of DBRef instead of href

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

您好专家@stackOverflow,

我们正在使用 Spring Data REST MongoDB。

是否可以预先加载子对象,而不是超链接——使用@DBRef 注释?请引用下面的 Process.templates 属性。

这是我们的模型:

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.ArrayList;
import java.util.List;

@Document(collection = "process")
public class Process {
@Id
private String id;

private String name;

@DBRef ///////// ------> This is the corresponding attribute <------
private List<MergeTemplate> templates = new ArrayList<>();

这是我们的存储库:

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResource(collectionResourceRel = "process", path = "process")
public interface ProcessRepository extends MongoRepository<Process, String> {
}

FindAll API 带来指向子对象的链接

http://localhost:8080/data/process

带来以下 JSON。

{
"_embedded" : {
"process" : [ {
"id" : "56d731b82b45ee21a0d2ab0a",
"name" : "application-kit",
"_links" : {
...,
/********** This is the attribute in question (templates) ************/
"templates" : {
"href" : "http://localhost:8080/data/process/56d731b82b45ee21a0d2ab0a/templates"
}
}
}, ...]
}

我什至尝试过@DBRef(lazy=false),但没有成功。

提前致谢!

最佳答案

你有两种可能:

  1. 将你的 MergeResult 存储在 Process 文档中(我不知道它是否适用于你的情况,但即使你有很多 MergeResult,因为 @DBRef 类似于 SQL 连接,而 MongoDB 在这方面并不出色)
  2. 使用Excerpt

使用摘录

您可以通过以下步骤实现您的目标:

1) 创建流程文档的投影

@Projection(name = "inlineTemplates", types = { Process.class }) 
interface InlineTemplates {

String getId();

String getName();

// using getTemplates() inside a projection causes the information to be inlined
List<MergeTemplate> getTemplates();
}

2) 编辑你的仓库

@RepositoryRestResource(excerptProjection = InlineTemplates.class)
interface ProcessRepository extends CrudRepository<Process, String> {}

3) 进入http://localhost:8080/data/process查看结果

注意:我没有尝试代码,只是按照文档中的说明操作。抱歉,如果它不起作用。

关于java - Spring 数据 REST MongoDB : Retrieve objects of DBRef instead of href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35991354/

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