Spring Data Rest 不从 Neo4j 获取嵌套对象
Spring Data Rest does not fetch nested objects from Neo4j
在对象的“_links”之后,return Json 对象是空的。我想这是因为 SDN 中缺少自动延迟抓取。
有没有简单的方法告诉 SDR 在 return 获取对象之前获取对象?
示例:
.../questions/1131
return以下JSON:
{
//...
"_links" : {
"self" : {
"href" : "http://localhost:8080/api/questions/1131"
},
"askedBy" : {
"href" : "http://localhost:8080/api/questions/1131/askedBy"
}
//...
}
}
单击 .../questions/1131/askedBy
应该 return 一个用户,但它 return 是一个用户对象,其中所有属性都是 null
,除了链接,这是正确的.
如何让 SDR 在将这些嵌入对象转换为 JSON 之前获取这些对象?
感觉有点老套,但我找到了可行的解决方案。
@Bean
@Transactional
public ResourceProcessor<Resource> fetchProcessor() {
return new ResourceProcessor<Resource>() {
@Autowired
Neo4jTemplate template;
@Override
public Resource process(Resource resource) {
final Object content = resource.getContent();
if (content != null) {
template.fetch(content);
}
return resource;
}
};
}
此外,我认为这有点矫枉过正,因为它调用 template.fetch()
即使对象已经填充。
有更好的主意吗?
在对象的“_links”之后,return Json 对象是空的。我想这是因为 SDN 中缺少自动延迟抓取。
有没有简单的方法告诉 SDR 在 return 获取对象之前获取对象?
示例:
.../questions/1131
return以下JSON:
{
//...
"_links" : {
"self" : {
"href" : "http://localhost:8080/api/questions/1131"
},
"askedBy" : {
"href" : "http://localhost:8080/api/questions/1131/askedBy"
}
//...
}
}
单击 .../questions/1131/askedBy
应该 return 一个用户,但它 return 是一个用户对象,其中所有属性都是 null
,除了链接,这是正确的.
如何让 SDR 在将这些嵌入对象转换为 JSON 之前获取这些对象?
感觉有点老套,但我找到了可行的解决方案。
@Bean
@Transactional
public ResourceProcessor<Resource> fetchProcessor() {
return new ResourceProcessor<Resource>() {
@Autowired
Neo4jTemplate template;
@Override
public Resource process(Resource resource) {
final Object content = resource.getContent();
if (content != null) {
template.fetch(content);
}
return resource;
}
};
}
此外,我认为这有点矫枉过正,因为它调用 template.fetch()
即使对象已经填充。
有更好的主意吗?