Java 带有spring数据的Neo4j-用@GraphId标记的暴露字段
我尝试将neo4j与spring data@RepositoryRestResource一起使用,但在返回的json中没有“id”字段。如何改变这种行为 示例输出:Java 带有spring数据的Neo4j-用@GraphId标记的暴露字段,java,neo4j,spring-data-neo4j-4,Java,Neo4j,Spring Data Neo4j 4,我尝试将neo4j与spring data@RepositoryRestResource一起使用,但在返回的json中没有“id”字段。如何改变这种行为 示例输出: { "_embedded" : { "movies" : [ { "name" : "movie1", }, ... } 我的实体: @NodeEntity public class Movie { @GraphId Long id; String name;
{
"_embedded" : {
"movies" : [ {
"name" : "movie1",
},
...
}
我的实体:
@NodeEntity
public class Movie {
@GraphId
Long id;
String name;
// getters and setters omitted for brevity
}
我的回购协议:
@RepositoryRestResource(collectionResourceRel = "movies", path = "movies")
public interface MovieRepo extends GraphRepository<Movie> { }
@RepositoryRestResource(collectionResourceRel=“movies”,path=“movies”)
公共接口MovierPO扩展了GraphRespository{}
这似乎是Spring数据REST的默认设置。下面列出的配置帮助,id在JSON中可见
@Component
public class SpringDataRestCustomization extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.exposeIdsFor(Movie.class);
}
}
我还注意到@RestController的工作方式不同,总是打印id,不管它是否在配置中公开,可能是因为它不是Spring数据REST包的一部分。您可能需要重新考虑在REST响应中公开基于Neo4j的id。。。SDR创建者在默认情况下不包括实体id,这可能是一个原因 对于Neo4j,从应用程序视图来看,公开和使用Neo4j内部id是安全的,因为应用程序中的任何内容都不会因使用它们而中断 这就是说,Neo4j内部id被回收,我的意思是,如果一个节点或关系的内部id为12345,并且在某个点上该节点或关系被删除,那么12345的id将有资格被未来的节点或关系重用。我认为,明智的做法是假设新的可用id将在将来某个时候重新使用。这有消极的副作用,即Neo4j内部id不被认为是“稳定的”,不应在应用程序之外使用
作为一个新代理密钥的示例,我将向您介绍GraphAware的neo4j uuid项目。此Neo4j插件可用于在所有节点和关系上自动创建唯一且稳定的UUID,这些节点和关系不会也不能更改或更新。您使用的SDN和SR-REST版本是什么?