java - 应该如何从 Spring Data Neo4j 6 中删除的 @Depth 注释迁移?

标签 java spring spring-data-neo4j

由于 spring-data-neo4j 6.0 @Depth删除了查询方法的注释( DATAGRAPH-1333commit )。
如何将使用注释的现有 5.3 代码迁移到 6.0? migration guide中没有提到它.
示例用法,记录在 5.3.6.RELEASE reference 中:

public interface MovieRepo extends Neo4jRepository<Movie, Long> {
  @Depth(1) // Default, load simple properties and its immediately-related objects 
  Optional<Movie> findById(Long id);

  @Depth(0) // Load simple properties only 
  Optional<Movie> findByProperty1(String property1);

  @Depth(2) // Load simple properties, immediately-related objects and their immediately-related objects
  Optional<Movie> findByProperty2(String property2);

  @Depth(-1) // Load whole relationship graph
  Optional<Movie> findByProperty3(String property3);
}
自定义查询是唯一的选择还是有替代品?

最佳答案

SDN 中不再有自定义深度。它要么加载 Java 模型中描述的所有内容,要么您必须提供自定义 Cypher 语句。
对此的一些背景:在 SDN 6 中,我们完全删除了内部 session 缓存,因为我们希望确保 Java 对象图在加载后与数据库图保持同步。因此,我们无法再跟踪多个操作的自定义深度。
部分加载的图现在反射(reflect)了 Java 模型的真实性,并且在持久化时可能会删除现有(但未加载)的关系。
可以在查询创建的文档部分找到一些见解。 https://docs.spring.io/spring-data/neo4j/docs/current/reference/html/#query-creation

关于java - 应该如何从 Spring Data Neo4j 6 中删除的 @Depth 注释迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65219036/

相关文章:

Java反射,给私有(private)静态字段添加 volatile 修饰符

spring - 多个场景@RequestMapping 与 Accept 或 ResponseEntity 一起生成 JSON/XML

java - 具有 Java 配置的 Spring Boot 自定义身份验证提供程序不起作用

java - 如何使用基于注释的配置代替基于 XML 的配置

Neo4j 按查询排序性能较差

spring-annotations - Spring数据和neo4j的正确注解配置是什么

java - JPanel 中的 PaintComponent 未被调用

java - 增加jfreechart中图例中的线条长度

neo4j - 启动嵌入式 Neo4j HA Slave 时出现索引创建错误

java - Webdriver:通过html标签查找包含属于某个类的html标签的元素