Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring数据Neo4j neo4jTemplate.fetch()只返回一个值_Neo4j_Spring Data Neo4j - Fatal编程技术网

Spring数据Neo4j neo4jTemplate.fetch()只返回一个值

Spring数据Neo4j neo4jTemplate.fetch()只返回一个值,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,我正在将使用@Fetch的工作系统转换为延迟加载策略。但是,当我使用容器检索对象时,容器只有一个条目,而neo4jTemplate.fetch(obj.getContainer())不会检索其他条目 以下是相关的片段 @NodeEntity public class SourcePage { @GraphId private Long id; @RelatedTo(type = "GROUP_MEMBER") private Group group; 组别:

我正在将使用@Fetch的工作系统转换为延迟加载策略。但是,当我使用容器检索对象时,容器只有一个条目,而neo4jTemplate.fetch(obj.getContainer())不会检索其他条目

以下是相关的片段

@NodeEntity
public class SourcePage {

    @GraphId
    private Long id;

    @RelatedTo(type = "GROUP_MEMBER")
    private Group group;
组别:

@NodeEntity
public class Group {
    @GraphId
    private Long id;

    @RelatedTo(type = "GROUP_MEMBER", direction = Direction.INCOMING)
    private Set<SourcePage> sourcePages = new HashSet<>();
结果是:

java.lang.AssertionError: 
Expected: is <254>
     but: was <1>

它按预期返回254。我还尝试了方向。在关系的每一方面都是如此-结果相同。

我发现了问题。这是深奥和可信的,它可能会帮助其他人看到同样的症状

首先,我没有表明我有自己的SourcePage hashCode()。它散列了一个字段,定义为:

@NotEmpty
@Indexed
private String url;
如果没有@Fetch,则不会自动检索“url”,因此容器中的所有SourcePage都具有相同的哈希代码。这导致了100%的冲突,并且只向集合中添加了一个条目

如果我删除了hashCode(),那么默认的哈希就起作用了,所有的对象都被添加到集合中

经过几个小时的调试,我发布了我的问题。当然,就在那之后,我偶然发现了解决方案

故事的寓意是:不要在没有ID的成员数据上提供哈希函数

MATCH (a)-[:`GROUP_MEMBER`]->(b) RETURN count(b)
@NotEmpty
@Indexed
private String url;