【发布时间】:2016-06-29 17:11:53
【问题描述】:
专家们您好@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),但没有运气。
提前致谢!
【问题讨论】:
标签: java spring mongodb rest spring-data-rest