java – Spring Data REST MongoDB:检索DBRef的对象而不是href
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring Data REST MongoDB:检索DBRef的对象而不是href,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2116字,纯文字阅读大概需要4分钟。
内容图文
![java – Spring Data REST MongoDB:检索DBRef的对象而不是href](/upload/InfoBanner/zyjiaocheng/893/3805af13993243e49f8f24cbe8604003.jpg)
你好专家@ 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),但没有运气.
提前致谢!
解决方法:
你有两种可能性:
>将MergeResults存储在Process文档中(我不知道它是否适用于您的情况,但即使您有很多MergeResults,它也是最佳选择,因为@DBRef类似于SQL连接,而且MongoDB不是那太好了)
>使用Excerpt
使用摘录
您可以通过以下步骤实现目标:
1)创建Process文档的投影
@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 Data REST MongoDB:检索DBRef的对象而不是href全部内容,希望文章能够帮你解决java – Spring Data REST MongoDB:检索DBRef的对象而不是href所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。