使用SDN 4.2,我试图用其他存储库使用的通用方法来定义基础知识库。这样做时,似乎生成的查询将使用通用类型作为节点标签,而不是将实际节点实体类名称用于标签。SDN的基础知识库不查询正确的节点标签
public interface BaseGraphRepository<T extends IdNode> extends GraphRepository<T> {
T findOneById(@Param("id") String id);
}
现在,让我们说,我有
@Repository
public interface InstrumentRepository extends BaseGraphRepository<Instrument> {
}
当查询InstrumentRepository,生成的查询是
MATCH (n:`IdNode`) WHERE n.`id` = { `id_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)
我本来期望的是,节点标签将是“仪器”,而不是“IdNode”。
我试图用一些规划环境地政司来修复它自己,但似乎SDN不支持的语法如下:
public interface BaseGraphRepository<T extends IdNode> extends GraphRepository<T> {
@Query("MATCH (n:#{#entityName}) WHERE n.id = {id} RETURN n")
T findOneById(@Param("id") String id);
}
任何想法如何,节点标签可以正确地在当前查询案件?
这看起来像SDN4中的一个错误。似乎工作正常与收集返回类型,但不与T.你应该在这里报告https://jira.spring.io/browse/DATAGRAPH/ –
你有没有尝试使用主索引与'Neo4jRepository'? http://docs.spring.io/spring-data/neo4j/docs/4.2.x/reference/html/#_usage –
digx1
谢谢@ digx1,在这种情况下使用主索引。我只是删除了findOneById()方法,而是调用通常的findOne(String id)。完美的作品。 –