Browse Source

DATAMONGO-1040 - Derived delete should respect collection name.

Adding collection metadata allows to fine grained remove entities from specific collections using derived delete queries.

Original pull request: #223.
pull/224/head
Christoph Strobl 11 years ago committed by Oliver Gierke
parent
commit
3d705a737f
  1. 2
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AbstractMongoQuery.java
  2. 4
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/AbstractMongoQueryUnitTests.java

2
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AbstractMongoQuery.java

@ -418,7 +418,7 @@ public abstract class AbstractMongoQuery implements RepositoryQuery {
private Object deleteAndConvertResult(Query query, MongoEntityMetadata<?> metadata) { private Object deleteAndConvertResult(Query query, MongoEntityMetadata<?> metadata) {
if (method.isCollectionQuery()) { if (method.isCollectionQuery()) {
return operations.findAllAndRemove(query, metadata.getJavaType()); return operations.findAllAndRemove(query, metadata.getJavaType(), metadata.getCollectionName());
} }
WriteResult writeResult = operations.remove(query, metadata.getJavaType(), metadata.getCollectionName()); WriteResult writeResult = operations.remove(query, metadata.getJavaType(), metadata.getCollectionName());

4
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/AbstractMongoQueryUnitTests.java

@ -101,6 +101,7 @@ public class AbstractMongoQueryUnitTests {
/** /**
* @see DATAMONGO-566 * @see DATAMONGO-566
* @see DATAMONGO-1040
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Test @Test
@ -111,7 +112,8 @@ public class AbstractMongoQueryUnitTests {
createQueryForMethod("deleteByLastname", String.class).setDeleteQuery(true).execute(new Object[] { "booh" }); createQueryForMethod("deleteByLastname", String.class).setDeleteQuery(true).execute(new Object[] { "booh" });
verify(this.mongoOperationsMock, times(1)).findAllAndRemove(Matchers.any(Query.class), Matchers.eq(Person.class)); verify(this.mongoOperationsMock, times(1)).findAllAndRemove(Matchers.any(Query.class), Matchers.eq(Person.class),
Matchers.eq("persons"));
} }
/** /**

Loading…
Cancel
Save