In model, in order to index some property, you should anotate it with @Index. SDN now adopt schema-based index policy, which means the Entity class name will be used as lable.
@NodeEntity @XmlRootElement @JsonAutoDetect @JsonIgnoreProperties(ignoreUnknown = true) public class User { @Indexed private String name; @Indexed(unique = true) private String userId; @Indexed private String phoneNumber; ....
In the above codes, SDN will produce tow labels for this modle User, _User.
If we want multiply lables for a modle, we could do this by following
@Labels private Set<String> lables; public Set<String> getLables() { return lables; } public void setLables(Set<String> lables) { this.lables = lables; } public void addLable(String lable) { if (this.lables == null) this.lables = new HashSet<String>(); lables.add(lable); } public void delLable(String lable){ if(this.lables!=null & this.lables.contains(lable)) lables.remove(lable); }
We can add lables for a node in extention
@Path("/addLable/active/{userName}") @GET @Produces(MediaType.APPLICATION_JSON) public Response activeUser(final @PathParam("userName") String userName) throws JSONException { try (Transaction tx = template.getGraphDatabaseService().beginTx()) { User user = userRepo.getUserByName(userName); if(user != null){ user.addLable(FIFOLabels.ActiveUser.name()); userRepo.saveOnly(user); }else{ return Response.status(Status.NOT_FOUND).entity("User doesn't exist").build(); } tx.success(); } return Response.status(Status.OK).entity(OK_MSG).build(); }
----------------------------------------------------------------------
But a failure comes in other modle using @Lables,
java.lang.NullPointerException at org.springframework.data.neo4j.fieldaccess. LabelFieldAccessorFactory$LabelFieldAccessor.setValue (LabelFieldAccessorFactory.java:73) at org.springframework.data.neo4j.fieldaccess. DefaultEntityState.setValue(DefaultEntityState.java:113)
Model Cods
@Labels private Set<String> lables; public Set<String> getLables() { return lables; } public void setLables(Set<String> lables) { this.lables = lables; } public void addLable(String lable) { if (this.lables == null) this.lables = new HashSet<String>(); lables.add(lable); } public void delLable(String lable) { if (this.lables != null & this.lables.contains(lable)) lables.remove(lable); } @Indexed(indexType = IndexType.POINT, indexName = "TaskLocation") String wkt; public void setLocation(float lon, float lat) { this.wkt = String.format("POINT( %.2f %.2f )", lon, lat); } public Task() { } public Task(String taskId, String title, String description) { this.taskId = taskId; this.title = title; this.description = description; }
The reasons I guess is that I used legency Index type .
@Indexed(indexType = IndexType.POINT, indexName = "TaskLocation") String wkt;
But,when I save a Task node by set it's lable, there is no error.
@Path("/addTask") @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response addTask(Task task) { logger.info("############# add new task ########################"); logger.info("task:" + task.toString()); task.addLable("NewTask"); taskRepo.saveOnly(task); return Response.status(Status.OK).entity(OK_MSG).build(); }
When comment this add lable command, error comes
//task.addLable("NewTask");
Why?
Labels Set not initialized when using @Labels annotation
https://jira.spring.io/browse/DATAGRAPH-541
It turns out that this is a bug in SDN.
Good news is that I solved this problem by manually initilize @Labels filed in constuctor
public Task() { this.lables = new HashSet<String>(); this.lables.add("Task"); this.lables.add("_Task"); }
References
http://graphaware.com/neo4j/2015/01/16/neo4j-graph-model-design-labels-versus-indexed-properties.html
http://stackoverflow.com/questions/22075802/spring-data-neo4j-3-0-0-labels-support
http://stackoverflow.com/questions/28272953/how-to-use-labels-spring-data-neo4j
http://stackoverflow.com/questions/28475023/how-to-add-labels-to-nodes-using-spring-data-neo4j
https://github.com/spring-projects/spring-data-neo4j/blob/15cc8418ed4d429a952b86f788717add8a93f76c/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/Person.java
相关推荐
Neo4j Vue 安装步骤 克隆或下载该库到本地 下载neo4j并安装到本地,启动neo4j服务 进入到该工程的根目录,输入命令:npm run update进行npm包的导入 使用命令:npm run dev启动该工程 默认端口是:8081 neo4j账号...
Neo4j Vue 安装步骤 克隆或下载该库到本地 下载neo4j并安装到本地,启动neo4j服务 进入到该工程的根目录,输入命令:npm run update进行npm包的导入 使用命令:npm run dev启动该工程 默认端口是:8081 neo4j账号...
仍然可以在下访问使用SDN 5 + OGM的先前版本。分支。 笔记有关具有相同数据集的Spring Data Neo4j 6的更广泛概述,可以访问分支。 上详细描述了示例项目。 该项目使用Java 11。堆栈这些是我们的Web应用程序的组件: ...
该驱动程序支持各种类型的数据库传输: 通过使用jdbc:neo4j:bolt://<host>:<port>/的Bolt协议(3.0.x至3.2.x) 通过使用jdbc:neo4j:http://<host>:<port>/的HTTP协议(2.x +) 展望未来,还将支持: 直接文件连接...
Neo4j Vue安装步骤克隆或下载该库到本地下载neo4j并安装到本地,启动neo4j服务进入到该工程的根目录,输入命令:npm run update进行npm包的导入使用命令:npm run dev启动该工程默认端口是:8081 neo4j账号信息: ...
宁静的 Neo4j 2.1+ 用于 Neo4j 宁静 apis 的 Sails.js 水线适配器安装从 NPM 安装。 $ npm install sails-restful-neo4j兼容性这与风帆 0.10 及更高版本兼容帆配置将以下配置添加到 config/connections.js 文件中: ...
DR $ docker run --name neo4j bitnami/neo4j:latestDocker撰写$ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-neo4j/master/docker-compose.yml > docker-compose.yml$ docker-compose up...
**Neo4J社区版3.5.12 Windows安装与使用指南** Neo4J是一款流行的图数据库管理系统,尤其适用于处理复杂关系数据。图数据库利用图形结构来存储和查询数据,其核心理念是节点、边(关系)和属性,这使得在处理网络、...
imap2neo4j: imap2neo4j imapServer imapUsername imapPassword imapMailbox neo4jServer [neo4jUsername] [neo4jPassword] [paging, eg import by batches of 1000] [specific range of messages, eg 50
通过在 conf/neo4j-server.properties 中添加一行来配置 Neo4j: org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.example.unmanagedextension=/example 启动 Neo4j 服务器。 写评论 curl ...
This book will take you from the installation of Neo4j through to building a full application with Neo4j at its heart, and everything in between. Using this book, you'll get everything up and ...
Sublime Text 2/3 插件:Neo4j Sublime 是最好的跨平台编辑器之一,所以我想为什么不创建一个简单的 Neo4j 插件呢?... 编辑用户名和密码(默认为neo4j:neo) 结果显示在控制台中(Ctrl+~)打开C
**Spring Data Neo4j (SDN) 4详解** Spring Data Neo4j(SDN)是Spring框架的一个扩展,专门用于处理与Neo4j图形数据库的交互。在Java开发中,SDN 4提供了一种简化的方式来操作和管理图形数据,使开发者能够充分...
egg-neo4j Neo4j用于鸡蛋框架。安装$ npm i egg-neo4j --save用法// {app_root}/config/plugin.jsexports . neo4j = { enable : true , package : 'egg-neo4j' ,} ;配置// {app_root}/config/config.default....
schemaless-graphql-neo4j 将无类型的动态GraphQL查询转换为Cypher。 签出,以更好地查看您可以编写的查询。入门$ npm install schemaless-graphql-neo4j :warning: 图书馆尚未发布操场您可以开始使用开发人员游乐场...
**Node.js on Neo4j: 在图形数据库上构建应用** 标题中的"nodejs-on-neo4j"指的是一项使用Node.js与Neo4j图形数据库交互的实践项目。这个项目通常涉及利用Node.js的灵活性和Neo4j的强大图数据处理能力来开发应用...
标题中的“spring-graph-neo4j:Neo4j的春天”暗示了我们将探讨Spring框架与图数据库Neo4j的结合使用。在Java开发领域,Spring框架是一个广泛使用的开源框架,它提供了一整套用于构建企业级应用的服务和工具。而Neo4j...
【标题】"neo4j:所有人的图表"指的是开源图数据库管理系统Neo4j,它将数据以图形结构的形式存储和处理,便于理解复杂的关系。在信息化时代,数据之间的关联性日益增强,图数据库如Neo4j应运而生,成为理解和分析...
【标题】:“NBD_Tutorials_Neo4J:PJATK NDB教程的Neo4J分配” 【描述】:“NBD_Tutorials_Neo4J”指的是一个关于使用Neo4J数据库进行数据处理和分析的教程,特别关注的是与PJATK(Probabilistic Joint Anomaly ...
'Neo4j' => Neo4j\OGM\Facades\Neo4j::class, ], ``` 5. **配置服务**:在`app/Providers/AppServiceProvider.php`的`boot`方法中加载配置文件和启动Neo4j客户端: ```php public function boot() { $this->app->...