Search in sources :

Example 6 with MyNode

use of org.neo4j.ogm.domain.gh873.MyNode in project neo4j-ogm by neo4j.

the class RelationshipMappingTest method shouldDealWithTheSameButNotEqualParentEntities.

// GH-640
@Test
public void shouldDealWithTheSameButNotEqualParentEntities() {
    Session tx = sessionFactory.openSession();
    Map<String, Object> result = tx.query("CREATE (n1:MyNode {name: 'node1'})\n" + "CREATE (n2:MyNode {name: 'node2'})\n" + "CREATE (n3:MyNode {name: 'node3'})\n" + "CREATE (n1) - [:REL_TWO] -> (n2)\n" + "CREATE (n2) - [:REL_ONE] -> (n1)\n" + "RETURN id(n1) as idOfn1, id(n2) as idOfn2, id(n3) as idOfn3", emptyMap()).iterator().next();
    // Lets flush the session and thus basically creating a new tx, at least as far as the cache is concerned
    tx = sessionFactory.openSession();
    // Let's go through a bunch of queries to make sure the associations are loaded as OGM would do by default…
    MyNode node1 = tx.load(MyNode.class, (Long) result.get("idOfn1"));
    MyNode node2 = tx.load(MyNode.class, (Long) result.get("idOfn2"));
    MyNode node3 = tx.load(MyNode.class, (Long) result.get("idOfn3"));
    // Let's check some preconditions, shall we?
    assertThat(node1).isNotNull();
    assertThat(node2).isNotNull();
    assertThat(node3).isNotNull();
    assertThat(node1.getRefOne()).isEqualTo(node2);
    assertThat(node1.getRefTwo()).containsOnly(node2);
    // We start a new tx, but keep working on the copy of the previously loaded node
    tx = sessionFactory.openSession();
    MyNode changed = tx.load(MyNode.class, node1.getId()).copy();
    changed.setName("Dirty thing.");
    changed.setRefOne(node3);
    tx.save(changed);
    // Again, verify in a new session.
    tx = sessionFactory.openSession();
    node1 = tx.load(MyNode.class, changed.getId());
    assertThat(node1.getRefOne()).isEqualTo(node3);
    assertThat(node1.getRefTwo()).containsOnly(node2);
    // Better safe than sorry.
    session.clear();
    assertThat(session.query("MATCH (n1:MyNode {name: 'Dirty thing.'}), " + "(n2:MyNode {name: 'node2'}), " + "(n3:MyNode {name: 'node3'}) " + "WHERE (n1) - [:REL_TWO] -> (n2)" + "and (n3) - [:REL_ONE] -> (n1) return n1, n2, n3", emptyMap()).queryResults()).hasSize(1);
}
Also used : MyNode(org.neo4j.ogm.domain.gh640.MyNode) Session(org.neo4j.ogm.session.Session) Test(org.junit.Test)

Example 7 with MyNode

use of org.neo4j.ogm.domain.gh873.MyNode in project neo4j-ogm by neo4j.

the class SingleUseEntityMapperTest method shouldMapEnumeratedMapProperties.

// GH-873
@Test
public void shouldMapEnumeratedMapProperties() {
    SingleUseEntityMapper entityMapper = new SingleUseEntityMapper(sessionFactory.metaData(), new ReflectionEntityInstantiator(sessionFactory.metaData()));
    Iterable<Map<String, Object>> results = sessionFactory.openSession().query("MATCH (t:MyNode) RETURN t.id AS id, t.type AS type, t.`attributes.a1` AS `attributes.a1`, t.`attributes.a2` AS `attributes.a2` LIMIT 1", EMPTY_MAP).queryResults();
    assertThat(results).hasSize(1);
    MyNode thingResult = entityMapper.map(MyNode.class, results.iterator().next());
    assertThat(thingResult.getId()).isEqualTo("the-id");
    assertThat(thingResult.getType()).isEqualTo("the-type");
    assertThat(thingResult.getAttributes()).containsEntry("a1", "v1");
    assertThat(thingResult.getAttributes()).containsEntry("a2", "v2");
}
Also used : HashMap(java.util.HashMap) Map(java.util.Map) MyNode(org.neo4j.ogm.domain.gh873.MyNode) ReflectionEntityInstantiator(org.neo4j.ogm.metadata.reflect.ReflectionEntityInstantiator) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)6 Map (java.util.Map)5 Session (org.neo4j.ogm.session.Session)5 MyNode (org.neo4j.ogm.domain.gh640.MyNode)4 MyNode (org.neo4j.ogm.domain.gh873.MyNode)3 HashMap (java.util.HashMap)2 ReflectionEntityInstantiator (org.neo4j.ogm.metadata.reflect.ReflectionEntityInstantiator)2 BeforeClass (org.junit.BeforeClass)1 Actor (org.neo4j.ogm.domain.cineasts.minimum.Actor)1 Movie (org.neo4j.ogm.domain.cineasts.minimum.Movie)1 Role (org.neo4j.ogm.domain.cineasts.minimum.Role)1 UserInfo (org.neo4j.ogm.domain.gh777.UserInfo)1 SessionFactory (org.neo4j.ogm.session.SessionFactory)1