/** * @see DATAGRAPH-632 */ @Test public void testFindByNestedREProperty() { Filter planetParam = new Filter("totalDestructionProbability", ComparisonOperator.EQUALS, "20"); planetParam.setNestedPropertyName("collision"); planetParam.setNestedEntityTypeLabel("Collision"); //Collision is an RE planetParam.setNestedRelationshipEntity(true); planetParam.setRelationshipType("COLLIDES"); //assume COLLIDES is the RE type planetParam.setRelationshipDirection("OUTGOING"); planetParam.setNestedRelationshipEntity(true); assertThat(queryStatements.findByType("Asteroid", new Filters().add(planetParam), 1).getStatement()) .isEqualTo("MATCH (n:`Asteroid`) MATCH (n)-[r0:`COLLIDES`]->(m0) " + "WHERE r0.`totalDestructionProbability` = { `collision_totalDestructionProbability_0` } " + "WITH DISTINCT n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); }
/** * @see OGM-279 */ @Test public void testFindByMultipleNestedREProperty() { Filter planetParam = new Filter("totalDestructionProbability", ComparisonOperator.EQUALS, "20"); planetParam.setNestedPropertyName("collision"); planetParam.setNestedEntityTypeLabel("Collision"); //Collision is an RE planetParam.setNestedRelationshipEntity(true); planetParam.setRelationshipType("COLLIDES"); //assume COLLIDES is the RE type planetParam.setRelationshipDirection("OUTGOING"); planetParam.setNestedRelationshipEntity(true); Filter satelliteParam = new Filter("signalStrength", ComparisonOperator.GREATER_THAN_EQUAL, "400"); satelliteParam.setBooleanOperator(BooleanOperator.AND); satelliteParam.setNestedPropertyName("monitoringSatellites"); satelliteParam.setNestedEntityTypeLabel("Satellite"); //Collision is an RE satelliteParam.setNestedRelationshipEntity(true); satelliteParam.setRelationshipType("MONITORED_BY"); //assume COLLIDES is the RE type satelliteParam.setRelationshipDirection("INCOMING"); satelliteParam.setNestedRelationshipEntity(true); assertThat(queryStatements.findByType("Asteroid", new Filters().add(planetParam).add(satelliteParam), 1) .getStatement()).isEqualTo( "MATCH (n:`Asteroid`) MATCH (n)-[r0:`COLLIDES`]->(m0) WHERE r0.`totalDestructionProbability` = { `collision_totalDestructionProbability_0` } " + "MATCH (n)<-[r1:`MONITORED_BY`]-(m1) WHERE r1.`signalStrength` >= { `monitoringSatellites_signalStrength_1` } WITH DISTINCT n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); }
/** * @see DATAGRAPH-632 */ @Test public void testFindByNestedBaseAndREProperty() { Filter planetParam = new Filter("totalDestructionProbability", ComparisonOperator.EQUALS, "20"); planetParam.setNestedPropertyName("collision"); planetParam.setNestedEntityTypeLabel("Collision"); //Collision is an RE planetParam.setNestedRelationshipEntity(true); planetParam.setRelationshipType("COLLIDES"); //assume COLLIDES is the RE type planetParam.setRelationshipDirection("OUTGOING"); planetParam.setNestedRelationshipEntity(true); Filter moonParam = new Filter("name", ComparisonOperator.EQUALS, "Moon"); moonParam.setNestedPropertyName("moon"); moonParam.setNestedEntityTypeLabel("Moon"); moonParam.setRelationshipType("ORBITS"); moonParam.setRelationshipDirection("INCOMING"); moonParam.setBooleanOperator(BooleanOperator.AND); assertThat(queryStatements.findByType("Asteroid", new Filters().add(planetParam, moonParam), 1).getStatement()) .isEqualTo("MATCH (n:`Asteroid`) MATCH (n)-[r0:`COLLIDES`]->(m0) " + "WHERE r0.`totalDestructionProbability` = { `collision_totalDestructionProbability_0` } " + "MATCH (m1:`Moon`) WHERE m1.`name` = { `moon_name_1` } MATCH (n)<-[:`ORBITS`]-(m1) WITH DISTINCT n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); }
filter.setNestedPropertyName("ratings"); filter.setNestedPropertyType(Rating.class); filter.setNestedRelationshipEntity(true); Collection<User> users = session.loadAll(User.class, filter, new Pagination(0, 2));
filter.setNestedEntityTypeLabel(session.metaData().entityType(nestedClassInfo.name())); if (session.metaData().isRelationshipEntity(nestedClassInfo.name())) { filter.setNestedRelationshipEntity(true);