Transactions Neo4j能否在每次更改节点或关系时自动设置updatedAt字段?
在我正在编写的应用程序中,我在每个节点和关系上手动设置一个Transactions Neo4j能否在每次更改节点或关系时自动设置updatedAt字段?,transactions,neo4j,updates,Transactions,Neo4j,Updates,在我正在编写的应用程序中,我在每个节点和关系上手动设置一个createdAt和一个updatedAt字段。这意味着我可以定期检查应用程序的其他用户是否添加了任何新内容 但是,由不同应用程序(如Neo4j浏览器)在同一数据库中编辑的任何元素可能不会设置这些字段,因此我的应用程序将不知道这些更改 是否可以配置Neo4j,以便任何源的任何修改都会将updatedAt字段设置为当前服务器时间 我已经读到了,这似乎是一个很好的线索,但看起来我需要在某处编写一些Java代码。你能举个例子说明怎么做吗?你应该
createdAt
和一个updatedAt
字段。这意味着我可以定期检查应用程序的其他用户是否添加了任何新内容
但是,由不同应用程序(如Neo4j浏览器)在同一数据库中编辑的任何元素可能不会设置这些字段,因此我的应用程序将不知道这些更改
是否可以配置Neo4j,以便任何源的任何修改都会将updatedAt字段设置为当前服务器时间
我已经读到了,这似乎是一个很好的线索,但看起来我需要在某处编写一些Java代码。你能举个例子说明怎么做吗?你应该用图表来看看。它为处理事件提供了更好的API。
使用此功能(或使用默认功能),您可以使用does job为您创建
TransactionEventHandler
(即TimestampUpdater
)
要向Neo4j服务器添加所需的功能,您应该创建。这将允许您使用自定义功能丰富Neo4j服务器 按照官方Neo4j文档中的说明,您应该可以创建基本的非托管扩展 另外,还有一个由Neo4j contributor-开发的非托管扩展示例。它非常简单,可以很好地概述如何做到这一点 可以找到关于如何在非托管扩展初始化(数据库启动)时向Neo4j添加内容的答案。它概述了如何使用
PluginLifecycle
当您拥有非托管扩展和
TimestampUpdater
事件处理程序时,可以将它们组合起来
在插件生命周期中注册处理程序
:
public class ExtensionPluginLifecycle implements PluginLifecycle {
@Override
public Collection<Injectable<?>> start(GraphDatabaseService graphDatabaseService,
Configuration config) {
graphDatabaseService.registerTransactionEventHandler(new TimestampUpdater());
}
@Override
public void stop() {
}
}
公共类扩展PluginLifecycle实现PluginLifecycle{
@凌驾
公共收藏嗨,请把我的答案标记为正确,如果它对你有帮助的话。