diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java index b0be6a50a..36e8f03db 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java @@ -17,6 +17,8 @@ package org.springframework.data.document.mongodb.repository; import java.util.regex.Pattern; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.data.document.mongodb.MongoConverter; import org.springframework.data.domain.Sort; import org.springframework.data.repository.query.SimpleParameterAccessor; @@ -38,6 +40,7 @@ import com.mongodb.QueryBuilder; */ class MongoQueryCreator extends AbstractQueryCreator { + private static final Log LOG = LogFactory.getLog(MongoQueryCreator.class); private final MongoConverter converter; /** @@ -66,7 +69,7 @@ class MongoQueryCreator extends AbstractQueryCreator { @Override protected QueryBuilder create(Part part, BindableParameterIterator iterator) { - return from(part.getType(), QueryBuilder.start(part.getProperty()), + return from(part.getType(), QueryBuilder.start(part.getProperty().toDotPath()), iterator); } @@ -84,7 +87,7 @@ class MongoQueryCreator extends AbstractQueryCreator { protected QueryBuilder and(Part part, QueryBuilder base, BindableParameterIterator iterator) { - return from(part.getType(), base.and(part.getProperty()), iterator); + return from(part.getType(), base.and(part.getProperty().toDotPath()), iterator); } @@ -113,7 +116,13 @@ class MongoQueryCreator extends AbstractQueryCreator { @Override protected DBObject complete(QueryBuilder criteria, Sort sort) { - return criteria.get(); + DBObject query = criteria.get(); + + if (LOG.isDebugEnabled()) { + LOG.debug("Created query " + query); + } + + return query; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java index 55c629123..50f122442 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java @@ -119,4 +119,16 @@ public abstract class AbstractPersonRepositoryIntegrationTests { assertThat(result.size(), is(1)); assertThat(result, hasItem(dave)); } + + @Test + public void findsPeopleByZipCode() throws Exception { + + Address address = new Address("Foo Street 1", "C0123", "Bar"); + dave.setAddress(address); + repository.save(dave); + + List result = repository.findByAddressZipCode(address.getZipCode()); + assertThat(result.size(), is(1)); + assertThat(result, hasItem(dave)); + } } \ No newline at end of file diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/MongoQueryCreatorUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/MongoQueryCreatorUnitTests.java index e781adf5a..942d0ebe4 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/MongoQueryCreatorUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/MongoQueryCreatorUnitTests.java @@ -60,7 +60,7 @@ public class MongoQueryCreatorUnitTests { @Test public void createsQueryCorrectly() throws Exception { - PartTree tree = new PartTree("findByFirstname", Person.class); + PartTree tree = new PartTree("findByFirstName", Person.class); MongoQueryCreator creator = new MongoQueryCreator(tree, new SimpleParameterAccessor( @@ -70,7 +70,7 @@ public class MongoQueryCreatorUnitTests { creator.createQuery(); creator = - new MongoQueryCreator(new PartTree("findByFirstnameAndFriend", + new MongoQueryCreator(new PartTree("findByFirstNameAndFriend", Person.class), new SimpleParameterAccessor( new Parameters(findByFirstnameAndFriend), new Object[] { "Oliver", new Person() }), converter); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java index 0fdadc546..3af1be0b3 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java @@ -84,4 +84,7 @@ public interface PersonRepository extends MongoRepository { * @return */ List findByAddress(Address address); + + + List findByAddressZipCode(String zipCode); }