仅在一个实体中的Neo4j OGM关系

时间:2017-02-07 14:58:42

标签: java neo4j neo4j-ogm

我有两个NodeEntity类,它们以多对一关系相关(如MANY到一个)。假设许多实体A与单个实体B相关。我希望能够加载深度大于0的实体B,但不加载许多相关实体A,实际上不需要访问实体A来自实体B.

是否可以仅在实体A上指定关系,将其从实体B中除去,这样加载实体B就不会加载任何实体A,但加载实体A会加载实体B?我担心事后保存实体,因为我不想在保存实体B时失去关系。

1 个答案:

答案 0 :(得分:3)

是的,你可以这样做。查看此测试用例

@Test
@Transactional
public void shouldNotDeleteUnmappedRelations() throws Exception {

    session.purgeDatabase();
    session.query("CREATE (a1:A) CREATE (a2:A) CREATE (b:B{name:'b'}) CREATE (a1)-[:REL]->(b) CREATE (a2)-[:REL]->(b) RETURN id(b) as id", Collections.emptyMap());

    Collection<B> res = session.loadAll(B.class, new Filters("name", "b"), 0);
    B b = res.iterator().next();
    assertThat(b).isNotNull();

    session.save(b);
    session.clear();

    Collection<A> allA = session.loadAll(A.class);
    assertThat(allA).hasSize(2);
    assertThat(allA).extracting("b").isNotNull();
}