提交后如何从服务器插件中的Neo4j数据库获取属性?

发现

我必须实现一个Neo4j服务器插件,该插件可对数据库的更改做出反应并获取有关这些更改的信息。我需要获取在事务中已添加,更改和删除的所有数据。我使用TransactionEventHandler注册到数据库。出于性能原因,我必须使用afterCommit对数据库进行更改后调用回调。这样,插件将不会阻止交易。

现在在此回调中,我做了一些类似的事情:

public void afterCommit(TransactionData data, Void arg1) {
    for(Node n:data.createdNodes()) {
        String firstkey = n.getPropertyKeys().iterator().next();
    }
}

但是getPropertyKeys抛出异常,因为事务已经被提交。我不明白为什么这是一个问题,我不想对事务进行任何更改,我只希望节点已更改的属性。有什么办法可以解决此问题?发生异常的原因是什么?

例外:

java.lang.IllegalStateException: This transaction has already been completed.
    at org.neo4j.kernel.impl.api.KernelTransactionImplementation.assertTransactionOpen(KernelTransactionImplementation.java:376)
    at org.neo4j.kernel.impl.api.KernelTransactionImplementation.acquireStatement(KernelTransactionImplementation.java:261)
    at org.neo4j.kernel.impl.api.KernelTransactionImplementation.acquireStatement(KernelTransactionImplementation.java:80)
    at org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.instance(ThreadToStatementContextBridge.java:64)
    at org.neo4j.kernel.InternalAbstractGraphDatabase$8.statement(InternalAbstractGraphDatabase.java:785)
    at org.neo4j.kernel.impl.core.NodeProxy.getPropertyKeys(NodeProxy.java:358)
    at de.example.neo4jVersionControl.ChangeEventListener.afterCommit(ChangeEventListener.java:41)
斯蒂芬·阿姆布鲁斯特(Stefan Armbruster)

afterCommit事务中已经提交(因此名称)。要从节点访问属性,您需要一个事务上下文-请记住,每个操作(甚至是只读)都需要此操作。

推荐的实现TransactionEventHandlers的方法是TransactionData依赖TransactionData.assignedNodeProperties()还将返回新创建的节点的属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

提交后如何从服务器插件中的Neo4j数据库获取属性?

来自分类Dev

如何在单个服务器上运行多个Neo4j数据库?

来自分类Dev

如何在单个服务器上运行多个Neo4j数据库?

来自分类Dev

通过Java代码生成数据库后Neo4j 2.2.2服务器无法启动

来自分类Dev

数据库大小:Neo4j vs SQL服务器

来自分类Dev

Neo4j无法连接到图形数据库服务器

来自分类Dev

使用Spring Data Neo4J 3.3.1创建数据库时,Neo4j 2.2.3服务器无法启动

来自分类Dev

了解Neo4j服务器插件

来自分类Dev

使用Neo4j在一台服务器上创建多个数据库

来自分类Dev

如何从 Neo4j 数据库中获取值的计数?

来自分类Dev

将插件加载到 Neo4j 数据库的嵌入式版本中

来自分类Dev

Neo4j-服务器数据库的JPA

来自分类Dev

自动启动neo4j-community.exe服务器并加载数据库?

来自分类Dev

Neo4j-服务器数据库的JPA

来自分类Dev

Neo4j Match语句包含数据库中不存在的属性

来自分类Dev

如何保存neo4j数据库?

来自分类Dev

如何清理Neo4j数据库

来自分类Dev

neo4j中的清理数据库

来自分类Dev

获取 Neo4J 数据库中 MATCH 查询返回的第 n 个结果

来自分类Dev

使用改造从服务器获取数据后如何在会议室数据库中存储数据

来自分类Dev

如何使用Java api列出neo4j数据库中的所有标签?

来自分类Dev

如何从C#后端在neo4j中创建数据库并启动该数据库?

来自分类Dev

将空间插件添加到neo4j服务器

来自分类Dev

Neo4j 2.0是否已缓存来自服务器插件的密码查询?

来自分类Dev

Neo4j 3.0-无法从旧版本(2.3.2)数据库中获取数据

来自分类Dev

如何将属性添加到包含条目(DataNucleus)的 Neo4j 数据库表?

来自分类Dev

使用neo4j-admin导入加载后,Neo4j数据库不可见

来自分类Dev

从本地Neo4j数据库中的所有节点获取单个字段的最快方法

来自分类Dev

在图形数据库 Neo4j 中获取所有图形名称的命令是哪里?

Related 相关文章

  1. 1

    提交后如何从服务器插件中的Neo4j数据库获取属性?

  2. 2

    如何在单个服务器上运行多个Neo4j数据库?

  3. 3

    如何在单个服务器上运行多个Neo4j数据库?

  4. 4

    通过Java代码生成数据库后Neo4j 2.2.2服务器无法启动

  5. 5

    数据库大小:Neo4j vs SQL服务器

  6. 6

    Neo4j无法连接到图形数据库服务器

  7. 7

    使用Spring Data Neo4J 3.3.1创建数据库时,Neo4j 2.2.3服务器无法启动

  8. 8

    了解Neo4j服务器插件

  9. 9

    使用Neo4j在一台服务器上创建多个数据库

  10. 10

    如何从 Neo4j 数据库中获取值的计数?

  11. 11

    将插件加载到 Neo4j 数据库的嵌入式版本中

  12. 12

    Neo4j-服务器数据库的JPA

  13. 13

    自动启动neo4j-community.exe服务器并加载数据库?

  14. 14

    Neo4j-服务器数据库的JPA

  15. 15

    Neo4j Match语句包含数据库中不存在的属性

  16. 16

    如何保存neo4j数据库?

  17. 17

    如何清理Neo4j数据库

  18. 18

    neo4j中的清理数据库

  19. 19

    获取 Neo4J 数据库中 MATCH 查询返回的第 n 个结果

  20. 20

    使用改造从服务器获取数据后如何在会议室数据库中存储数据

  21. 21

    如何使用Java api列出neo4j数据库中的所有标签?

  22. 22

    如何从C#后端在neo4j中创建数据库并启动该数据库?

  23. 23

    将空间插件添加到neo4j服务器

  24. 24

    Neo4j 2.0是否已缓存来自服务器插件的密码查询?

  25. 25

    Neo4j 3.0-无法从旧版本(2.3.2)数据库中获取数据

  26. 26

    如何将属性添加到包含条目(DataNucleus)的 Neo4j 数据库表?

  27. 27

    使用neo4j-admin导入加载后,Neo4j数据库不可见

  28. 28

    从本地Neo4j数据库中的所有节点获取单个字段的最快方法

  29. 29

    在图形数据库 Neo4j 中获取所有图形名称的命令是哪里?

热门标签

归档