in neo4j/src/main/java/org/hibernate/ogm/datastore/neo4j/dialect/impl/BaseNeo4jEntityQueries.java [367:403]
private StringBuilder findAssociationPartialQuery(String relationshipType, AssociationKeyMetadata associationKeyMetadata) {
StringBuilder queryBuilder = new StringBuilder( findAssociationPartialQuery );
if ( isPartOfEmbedded( relationshipType ) ) {
String[] path = split( relationshipType );
int index = 0;
for ( String embeddedRelationshipType : path ) {
queryBuilder.append( " -[" );
if ( index == path.length - 1 ) {
queryBuilder.append( "r" );
}
queryBuilder.append( ":" );
appendRelationshipType( queryBuilder, embeddedRelationshipType );
queryBuilder.append( "]-> (" );
index++;
if ( index == path.length ) {
queryBuilder.append( "target" );
}
queryBuilder.append( ":" );
queryBuilder.append( EMBEDDED );
queryBuilder.append( ") " );
}
}
else {
queryBuilder.append( associationKeyMetadata.isInverse() ? " <-[r:" : " -[r:" );
appendRelationshipType( queryBuilder, relationshipType );
queryBuilder.append( associationKeyMetadata.isInverse() ? "]- " : "]-> " );
if ( associationKeyMetadata.getAssociationKind() == AssociationKind.ASSOCIATION ) {
EntityKeyMetadata associatedEntityMetadata = associationKeyMetadata.getAssociatedEntityKeyMetadata().getEntityKeyMetadata();
appendEntityNode( "target", associatedEntityMetadata, queryBuilder, 0, false );
}
else {
queryBuilder.append( "(target)" );
}
queryBuilder.append( ' ' );
}
return queryBuilder;
}