private static String initRemoveAssociationRowQuery(EntityKeyMetadata ownerEntityKeyMetadata, AssociationKeyMetadata associationKeyMetadata) {
		StringBuilder queryBuilder = new StringBuilder( "MATCH " );
		queryBuilder.append( "(n:" );
		queryBuilder.append( ENTITY );
		queryBuilder.append( ":" );
		appendLabel( ownerEntityKeyMetadata, queryBuilder );
		appendProperties( ownerEntityKeyMetadata, queryBuilder );
		queryBuilder.append( ") - " );
		queryBuilder.append( "[r" );
		queryBuilder.append( ":" );
		appendRelationshipType( queryBuilder, associationKeyMetadata );
		int offset = ownerEntityKeyMetadata.getColumnNames().length;
		boolean hasIndexColumns = associationKeyMetadata.getRowKeyIndexColumnNames().length > 0;
		if ( hasIndexColumns ) {
			appendProperties( queryBuilder, associationKeyMetadata.getRowKeyIndexColumnNames(), offset );
		}
		queryBuilder.append( "] - (e" );
		if ( associationKeyMetadata.getAssociationKind() == AssociationKind.EMBEDDED_COLLECTION ) {
			queryBuilder.append( ":" );
			queryBuilder.append( EMBEDDED );
		}
		if ( !hasIndexColumns ) {
			appendProperties( queryBuilder, associationKeyMetadata.getAssociatedEntityKeyMetadata().getEntityKeyMetadata().getColumnNames(), offset );
		}
		queryBuilder.append( ")" );
		queryBuilder.append( " DELETE r" );
		if ( associationKeyMetadata.getAssociationKind() == AssociationKind.EMBEDDED_COLLECTION ) {
			queryBuilder.append( ", e" );
		}
		return queryBuilder.toString();
	}
private static String initRemoveAssociationRowQuery ( EntityKeyMetadata ownerEntityKeyMetadata , AssociationKeyMetadata associationKeyMetadata ) { StringBuilder queryBuilder = new StringBuilder ( "MATCH " ) ; queryBuilder . append ( "(n:" ) ; queryBuilder . append ( ENTITY ) ; queryBuilder . append ( ":" ) ; appendLabel ( ownerEntityKeyMetadata , queryBuilder ) ; appendProperties ( ownerEntityKeyMetadata , queryBuilder ) ; queryBuilder . append ( ") - " ) ; queryBuilder . append ( "[r" ) ; queryBuilder . append ( ":" ) ; appendRelationshipType ( queryBuilder , associationKeyMetadata ) ; int offset = ownerEntityKeyMetadata . getColumnNames ( ) . length ; boolean hasIndexColumns = associationKeyMetadata . getRowKeyIndexColumnNames ( ) . length > 0 ; if ( hasIndexColumns ) { appendProperties ( queryBuilder , associationKeyMetadata . getRowKeyIndexColumnNames ( ) , offset ) ; } queryBuilder . append ( "] - (e" ) ; if ( associationKeyMetadata . getAssociationKind ( ) == AssociationKind . EMBEDDED_COLLECTION ) { queryBuilder . append ( ":" ) ; queryBuilder . append ( EMBEDDED ) ; } if ( ! hasIndexColumns ) { appendProperties ( queryBuilder , associationKeyMetadata . getAssociatedEntityKeyMetadata ( ) . getEntityKeyMetadata ( ) . getColumnNames ( ) , offset ) ; } queryBuilder . append ( ")" ) ; queryBuilder . append ( " DELETE r" ) ; if ( associationKeyMetadata . getAssociationKind ( ) == AssociationKind . EMBEDDED_COLLECTION ) { queryBuilder . append ( ", e" ) ; } return queryBuilder . toString ( ) ; }
/*
Example with association:

MATCH (n:ENTITY:table {id: {0}}) -[r:role] - (e)
DELETE r

Example with embedded collection:

MATCH (n:ENTITY:table {id: {0}}) -[r:role] - (e:EMBEDDED)
DELETE r, e

Example with indexes:

MATCH (n:ENTITY:table {id: {0}}) -[r:role {index: {1}}] - (e)
DELETE r