【发布时间】:2021-06-20 04:05:20
【问题描述】:
neo4j @Query 注解的 Spring Data 不会填充由 @Relationship 注解标记的任何子/父节点。
在 SpringData Repository 类中使用标准的 @CrudRepository 或 @PagingAndSortingRepository 查询时,子/父节点类将返回完整填充。
存储库接口
@Repository("trackerRepository")
public interface TrackerRepository extends PagingAndSortingRepository<Tracker, String> {
Tracker findByTrackerId(@NotNull String trackerId);
}
节点类
public final class Tracker extends Node {
@NotNull
@JsonProperty("trackerId")
private String trackerId;
@NotNull
@Relationship(type = "ASSIGNED_TO")
@JsonProperty("asset")
private Asset asset;
@NotNull
@Relationship(type = "ISSUED_BY")
@JsonProperty("organization")
private Organization organization;
}
使用 findByTrackerId 方法时,Spring 使用方法名称/签名生成的查询完美运行,并返回完全填充的资产和组织节点。
但是,当使用@Query 注解而不是从方法签名生成的 Spring 查询时,@Relationship 节点不会与查询响应一起返回。
存储库接口
@Repository("trackerRepository")
public interface TrackerRepository extends PagingAndSortingRepository<Tracker, String> {
@Query("MATCH (tracker:Tracker) WHERE (tracker.trackerId = $trackerId) RETURN tracker")
Tracker findByTrackerId(@NotNull @Param("trackerId") String trackerId);
}
是否可以配置带有@Query 标记的存储库方法来加入@Relationship 注解定义的父/子节点?
【问题讨论】:
标签: java spring neo4j spring-data-neo4j