Tinkerpop 框架写入数据库 - 新手

2024-03-10

我第一次使用 Frames,但我的 Java 还很生疏。我一直坚持通过框架将信息写入数据库。我一直在关注文档并拥有一个 Person 界面。

public interface Person {
  @Property("name")
  public String getName();

  @Adjacency(label="knows")
  public Iterable<Person> getKnowsPeople();

  @Adjacency(label="knows")
  public void addKnowsPerson(final Person person);

  @GremlinGroovy("it.out('knows').out('knows').dedup") //Make sure you use the GremlinGroovy module! #1
  public Iterable<Person> getFriendsOfAFriend()
}

这是取自文档的。 我可以使用这个简单的代码从图表中获取数据。

TinkerGraph graph = TinkerGraphFactory.createTinkerGraph(); //This graph is pre-populated.
FramedGraphFactory factory = new FramedGraphFactory(new GremlinGroovyModule()); //(1) Factories should be reused for performance and memory conservation.

FramedGraph framedGraph = factory.create(graph); //Frame the graph.

Person person = framedGraph.getVertex(1, Person.class);
person.getName(); // equals "marko" 

我想知道的是如何创建一个新的 Person 对象并将其写入图表。因为 Person 只是一个接口,我不能这样做:

Person person2 = new Person();
person2.setName("John");
person2.setAge(36);
framedGraph.addVertex(person2);

所以我尝试了一个 PersonImpl 类来实现 Person 并添加了以下代码

PersonImpl johnBoy = new PersonImpl();
johnBoy.setName("John");
johnBoy.setAge(36);
johnBoy.addKnowsPerson(person);
person.addKnowsPerson(johnBoy);

但是我得到了以下 NullPointer 并且我现在真的陷入困境。我希望有人能够帮助我。

Exception in thread "main" java.lang.NullPointerException
    at com.tinkerpop.blueprints.impls.tg.TinkerGraph.addEdge(TinkerGraph.java:331)
    at com.tinkerpop.frames.FramedGraph.addEdge(FramedGraph.java:310)
    at com.tinkerpop.frames.annotations.AdjacencyAnnotationHandler.addEdges(AdjacencyAnnotationHandler.java:87)
    at com.tinkerpop.frames.annotations.AdjacencyAnnotationHandler.processVertex(AdjacencyAnnotationHandler.java:53)
    at com.tinkerpop.frames.annotations.AdjacencyAnnotationHandler.processElement(AdjacencyAnnotationHandler.java:26)
    at com.tinkerpop.frames.annotations.AdjacencyAnnotationHandler.processElement(AdjacencyAnnotationHandler.java:15)
    at com.tinkerpop.frames.FramedElement.invoke(FramedElement.java:89)
    at com.sun.proxy.$Proxy4.addKnowsPerson(Unknown Source)
    at com.elecrticdataland.utility.TinkerTest.main(TinkerTest.java:45)

非常感谢,

John


你不能创建一个Person除非通过代理的方式。换句话说,您不能使用该接口的具体实现,它必须由FramesGraph.

您有创建一个的代码Person here:

FramedGraph framedGraph = factory.create(graph); //Frame the graph.

Person person = framedGraph.getVertex(1, Person.class);
person.getName(); // equals "marko" 

没有它,创建的Person实现将不知道任何有关底层和注入的信息Graph实例给予factory.create()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tinkerpop 框架写入数据库 - 新手 的相关文章

  • 在 WIndows 下安装 Apache Tinkerpop (Gremlin)

    一 安装 JDK 首先安装 Java JDK xff0c 这个去官网下载即可 xff0c 我下载安装的 JDK19 xff08 jdk 19 windows x64 bin msi xff09 xff0c 细节不赘述 二 去 Tinkerp
  • gremlin python - 向顶点添加多个但数量未知的属性

    我想向一个顶点添加多个属性 但从一开始就没有明确知道这些属性可能是什么 例如 假设将一个人作为顶点添加到图中 我们有以下属性字典 Person 1 id 1 first name bob age 25 height 177 也许要添加另一个
  • 选择在 Python 中使用 Neo4j 的适当方法

    我目前正在使用 neo4j 的嵌入式 python 绑定 我目前没有任何问题 因为我的图非常小 稀疏且最多 100 个节点 我正在开发的算法涉及图上的大量遍历 更具体地说是图上以及不同子图上的 DFS 将来我打算在大型图上运行该算法 据说是
  • Java GraphTraversal 输出 Gremlin 查询

    如何从 Java 输出 Gremlin 查询GraphTraversal目的 默认输出 graphTraversal toString 好像 HasStep label eq brand name eq Nike status within
  • TinkerPop:添加顶点图 API 与遍历 API

    背景 在其中之一SO posts推荐使用 Traversal API 而非 Graph API 来进行变异 所以我尝试了一些测试 发现 Graph API 似乎更快 我完全相信这个建议 但我试图了解它如何更好 我确实尝试过谷歌搜索 但没有找
  • JanusGraph Gremlin 使用“as”和“select”进行图遍历提供了意想不到的结果

    我有两个图遍历 结果如下 g V has id 2 outE knows inV gt v 4216 gt v 8312 g V has id 5 outE knows inV gt v 4216 gt v 8312 基本上 两个顶点都有
  • Gremlin - 随机选择一项

    将我视为 用户 1 查询的目的是获取我关注的人 发布 的帖子 并对每个帖子进行检查 是否已被我喜欢过 我关注的其他人是否喜欢它 如果是随机选择其中一位用户返回 样本数据 g addV user property id 1 as 1 addV
  • Spark 集群和 Cassandra 的 Titan 设置和配置

    aurelius 邮件列表以及 stackoverflow 上已经有几个关于配置 Titan 使其与 Spark 一起工作的具体问题的问题 但我认为缺少的是使用 Titan 和 Spark 的简单设置的高级描述 我正在寻找的是使用推荐设置的
  • 为什么 Gremlin JavaScript 使用“from_”映射而不是“from”?

    在发现你必须使用之前我为此苦苦挣扎了几个小时from 代替from使用 gremlin javascript 时 在深入研究源代码后 我终于发现代码正在使用from 代替from see code 因为我是新手 所以这很奇怪 因为它的对应部
  • 变量 - 海王星上的 Gremlin

    我位于 Gremlin 控制台并连接到 AWS Neptune 数据库 g V hasLabel Risk toList 提供了预期的结果 但是当我尝试将结果分配给变量时 risks g V hasLabel Risk toList 我收到
  • 如何使用 Cassandra 存储后端删除 Titan 中的图形?

    我使用 Titan 0 4 0 All 在 Ubuntu 12 04 上以共享 VM 模式运行 Rexster 如何正确删除 Titan 中使用 Cassandra 存储后端的图表 我已经尝试过TitanCleanup clear grap
  • 在 Azure Cosmos DB 中使用 Gremlin 重命名属性

    我们的一些代码库已经更改 因此它现在期望过去具有名称为 Sdg 的属性的顶点现在具有名称为 causeType 且具有相同值的属性 简而言之 财产的重命名 在这一点上我已经尝试了很多 而且 令我有点惊讶的是弄清楚如何搜索图表并在需要时进行重
  • 将 gremlin CLI 连接到远程tinkerpop gremlin-server

    Using gremlin javascript 我使用以下方式连接到远程服务器 const gremlin require gremlin const Graph gremlin structure Graph const DriverR
  • Tinkerpop Gremlin 深度优先搜索顺序

    我有一个非常简单的示例图 我试图对其进行深度优先查询 假设图的边看起来像这样 A gt B A gt C B gt D B gt E C gt F C gt G 从 A 开始的深度优先搜索应该返回 A B D E C F G 但如果我能得到
  • Gremlin Python createIndex (Tinkerpop)

    我目前正在使用 Tinkerpop 与gremlin python 客户端 https pypi python org pypi gremlinpython 3 2 4使用默认的TinkerGraph Gremlin https tinke
  • Gremlin 找到最高匹配

    我计划使用图形数据库 AWS Neptune 可以使用 Gremlin 作为一种知识库进行查询 知识库将用作具有多个特征的实体的分类工具 为简单起见 我在本示例中使用几何形状来编码实体的属性 假设我想对与正方形 三角形和圆形相关的点进行分类
  • 在处理可选字段时,在 gremlin 中使用注入进行长遍历

    我正在构建一个长遍历以在一个查询中添加数百个顶点 我从官方网站上看到 推荐的方法是注入对象列表并在那里添加顶点 http tinkerpop apache org docs current recipes long traversals h
  • Tinkerpop 框架写入数据库 - 新手

    我第一次使用 Frames 但我的 Java 还很生疏 我一直坚持通过框架将信息写入数据库 我一直在关注文档并拥有一个 Person 界面 public interface Person Property name public Strin
  • Bulbflow:neo4jserver Graph 和 neo4jserver Neo4jclient 之间的区别

    我现在正在尝试学习如何连接到 Neo4j 服务器并使用 Python 中的 Bulbflow 在其上运行 Cypher 查询 我不明白的是连接到 neo4j 服务器的两种可能性之间的区别 1 Graph http bulbflow com
  • 使用 Gremlin 查询语言获取边属性以及源和目标顶点 ID

    我正在尝试检索边缘属性作为值以及目标和源节点 ID 我当前的数据库如下所示 Edge id label outV inV name ID 0 edge 0 1 E 0 Nodes id label name ID 0 node A 0 1

随机推荐

  • 如何让 GestureDetector 在触摸 Flutter 中的空白区域时也起作用

    我有2个Text里面的小部件GestureDetector The onTap回调仅在我触摸时通知Text但不是我里面的空白空间Container 如何让这个通知就像我触摸按钮一样 Very very very long long ng l
  • Facebook graphApi oAuth - 如何获取访问令牌?

    我正在尝试使用 JavaScript Facebook SDK 获取某个用户的留言墙 当我使用图形 API Explorer 时 它工作正常 但是当我在我的网站上尝试同样的操作时 出现以下错误 code 104 message An acc
  • 实例化列表时 是什么类型?

    我在多个不同的地方看到人们实例化列表或 ArrayList 例如 List
  • Java EE 容器中的同步请求-应答模式

    我希望在 Java EE 容器内使用 JMS 实现同步请求 答复模式 顺序会是这样的 浏览器向 Web 应用程序发出数据请求 这是一个阻塞请求 比如在线程 T1 上 Web 应用程序需要连接到远程 Web 服务才能满足上述请求 因此 它形成
  • 在真实设备与模拟器上测试 iOS 测试

    我是 iPhone iPad 开发新手 即将完成我的第一个应用程序 我正在寻找一些一般性建议 我知道在实际设备上进行测试很重要 而不仅仅是模拟器 人们在交易设备上进行测试时通常会遇到哪些类型的事情 而他们在模拟器中看不到 该应用程序本身主要
  • pl/sql 函数中的 select 子句返回错误值

    当我这样做时 select sum m mot from rmtq mq join rmo m on mq id m id where mq another 138 返回值 2 这是正确的 但是当我将此代码放入函数中时 create or
  • 多个主屏幕小部件的单个配置活动

    我的 Android 应用程序有一个针对不同 Homescreen 小部件的配置活动 我在配置活动中获取 WidgetId 如下所示 widgetid extras getInt AppWidgetManager EXTRA APPWIDG
  • iOS 6 保存/恢复应用程序状态功能

    我正在尝试在 iOS 6 上使用新的保存 恢复应用程序状态功能 但是如果我杀死了应用程序 则不会调用 application shouldRestoreApplicationState 方法 因此它不会恢复应用程序状态 但如果我正在运行它从
  • 正交相机旋转

    我可以使用此代码旋转相机 camera zoom 3 in constructor if camera zoom gt 1 camera zoom 0 01f camera rotate 15 this is done in render
  • Shrine gem - 如何从 s3 删除上传的图像

    显然 remove attachment插件可以完成检查和提交的技巧 但如何从控制器调用该方法 所有允许您设置表单字段的插件 remove attachment remote url data uri 的工作方式是向您的模型添加 gette
  • 使用简洁的 DAL 和 C#

    我有一个使用 Dapper 的数据访问层 但不禁觉得它可以更加优雅 DAL 只是传递参数并根据模型的命名响应映射模型 因此该部分至少是直接的 但我讨厌看起来重复的代码 这是一个例子 public IEnumerable
  • 故事板segue 显示从底部垂直而不是水平的过渡

    我有一个基本的故事板设置 可以通过单击按钮来通过一些视图控制器进行转换 我还在故事板的根部设置了一个导航控制器 希望这个 Segue 链的性能与一系列 Pushes 过去的工作方式类似 功能都在那里 导航栏控制也是如此 但是过渡都有从底部进
  • 计算非常大的矩阵的逆

    我正在尝试用 C 计算一个非常大的矩阵 11300x21500 的逆 到目前为止 我已经尝试过 Eigen 和 Armadillo 库 但都在初始化阶段失败 说没有足够的内存 有什么办法可以克服这种情况吗 提前致谢 P S I should
  • 使 Linearlayout 可滚动而不使用 Scrollview

    我有一个 Linearlayout 我想使其可滚动而不使用 ScrollView 是否可以 任何建议将不胜感激 详细信息如下 如果我使用 ScrollView 包装 LinearLayout 那就可以了 但是当我在 LinearLayout
  • 如何在 Alamofire 中使用 NetworkReachabilityManager

    我想要类似的功能AFNetworking在 Objective C 中 在 Swift 中使用 Alamofire NetworkReachabilityManager Reachability detection AFNetworkRea
  • Ruby 使用什么哈希函数?

    Ruby 的哈希函数算法是什么 标准 Ruby 实现使用杂音哈希 http murmurhash googlepages com 对于某些类型 整数 字符串 来自 string c 1901 MurmurHash described in
  • _("text"),即下划线括号字符,有什么作用? [复制]

    这个问题在这里已经有答案了 在 C 代码中我遇到了这一点 test 它有什么作用 我试图自己查找它 但正如你可以想象的那样 搜索引擎不支持搜索 它正在调用名为的函数 例如 include
  • 依赖注入:海龟一路向下?

    所以我想知道单元测试如何处理外部依赖项 在这里和其他地方 我已经熟悉了依赖注入 以及它如何允许我们测试代码单元 A 但是 我对如何测试其他单元 B 和 C 感到困惑 这些单元现在拥有外部依赖项 以便它们可以将其注入到原始单元 A 中 例如
  • 在整数规划中使用最小/最大运算符

    我正在尝试使用整数规划优化目标函数 我必须使用Max我的函数中的运算符 我想知道有什么办法可以处理这个问题吗 其实我的问题类似于使用最小 最大within整数线性规划 https stackoverflow com questions 10
  • Tinkerpop 框架写入数据库 - 新手

    我第一次使用 Frames 但我的 Java 还很生疏 我一直坚持通过框架将信息写入数据库 我一直在关注文档并拥有一个 Person 界面 public interface Person Property name public Strin