有没有办法像 Hibernate 一样在 Neo4J 上记录查询?

Posted

技术标签:

【中文标题】有没有办法像 Hibernate 一样在 Neo4J 上记录查询?【英文标题】:Is there a way to log queries on Neo4J like Hibernate? 【发布时间】:2012-02-16 00:46:21 【问题描述】:

所以,这里是场景:

我有 Neo4J 服务器在本地运行,其中包含一些数据 我有一个使用spring-data-neo4j 的网络应用程序

以下代码基于示例代码Cineasts:

public interface CrewRepository extends GraphRepository<Crew> 

  Iterable<Crew> findByNameLike(String name);

  @Query("start thinker=node(0) match thinker-[:crews]-crews return crews")
  Set<Crew> findByThinker(Long thinkerId);


这里没有消息。问题是:查询findByNameLike 不起作用,而findByThinker 起作用。

我已经多次修改了我的日志配置文件 - 最终版本如下 - 但是,无论我尝试什么,我都看不到任何查询被记录在我的日志文件或服务器上。

<logger name="org.neo4j">
  <level value="DEBUG" />
  <appender-ref ref="console" />
</logger>

<logger name="org.springframework.data.neo4j">
  <level value="DEBUG" />
  <appender-ref ref="console" />
</logger>

<root>
  <priority value="error" />
  <appender-ref ref="console" />
</root>

我想要的只是记录查询,这样我就可以查看它是否是 spring-data-neo4j 上的错误,或者我是否遗漏了什么...我查看了两者的文档,代码示例,但找不到任何东西具体的。

有什么帮助吗?谢谢!

【问题讨论】:

查询登录将被添加到下一个发布的快照/里程碑中。 您的Crew 班级是什么样的?您将什么传递给 findByNameLike 以及您在 Crew 对象中存储了哪些数据? 【参考方案1】:

如果有人在这里寻找如何在通过 REST API 远程访问 Neo4j 服务器时记录查询,请使用

<logger name="org.springframework.data.neo4j.rest.SpringRestCypherQueryEngine">
    <level value="debug" />
</logger>

如果您使用 Spring Data Neo4j 并希望查看与您的 DAO 方法对应的派生查询,

<logger name="org.springframework.data.neo4j.repository.query.DerivedCypherRepositoryQuery">
    <level value="debug" />
</logger>

【讨论】:

无论是这个还是其他答案都不适用于 log4j2。与 log4j2 有什么不同吗?【参考方案2】:

您可以通过将以下行添加到您的 log4j.xml 来启用查询日志记录:

<logger name="org.springframework.data.neo4j.support.query">
    <level value="debug" />
</logger>

【讨论】:

以上是关于有没有办法像 Hibernate 一样在 Neo4J 上记录查询?的主要内容,如果未能解决你的问题,请参考以下文章

使用 nolock 的 Java Hibernate HQL 查询

neo4j - 标签 vs 属性 vs 关系 + 节点

李彦宏称AI作画将会像拍照一样简单;马斯克考虑对推特所有用户收费 ;Neo4j 5发布|极客头条

有没有办法在javascript中创建hashmap并像添加和删除值一样操作它

有没有办法像在 Webpack 中一样在 Parcel 中代理请求?

有没有办法使用 foreach 或 unwind 将 csv 导入 Neo4j?