diff --git a/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchQuery.java b/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchQuery.java index f82ecbb94..1b0bc7445 100644 --- a/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchQuery.java +++ b/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchQuery.java @@ -39,15 +39,15 @@ public class SearchQuery implements SimpleQuery>, SimpleProjec private final PEntity path; - public SearchQuery(Session session, PEntity path, LuceneSerializer serializer) { - this(Search.getFullTextSession(session), path, serializer); + public SearchQuery(Session session, PEntity path, boolean lower) { + this(Search.getFullTextSession(session), path, lower); } - public SearchQuery(FullTextSession session, PEntity path, LuceneSerializer serializer) { + public SearchQuery(FullTextSession session, PEntity path, boolean lower) { this.queryMixin = new QueryMixin>(this); this.session = Assert.notNull(session,"session"); this.path = Assert.notNull(path,"path"); - this.serializer = Assert.notNull(serializer,"serializer"); + this.serializer = new SearchSerializer(lower); } @Override diff --git a/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchSerializer.java b/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchSerializer.java new file mode 100644 index 000000000..5175a8dd4 --- /dev/null +++ b/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchSerializer.java @@ -0,0 +1,25 @@ +package com.mysema.query.search; + +import org.hibernate.search.annotations.Field; + +import com.mysema.query.lucene.LuceneSerializer; +import com.mysema.query.types.Path; + +public class SearchSerializer extends LuceneSerializer{ + + public SearchSerializer(boolean lowerCase) { + super(lowerCase); + } + + @Override + public String toField(Path path) { + if (path.getAnnotatedElement() != null){ + Field fieldAnn = path.getAnnotatedElement().getAnnotation(Field.class); + if (fieldAnn != null && fieldAnn.name().length() > 0){ + return fieldAnn.name(); + } + } + return super.toField(path); + } + +} diff --git a/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchQueryTest.java b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchQueryTest.java index 75b05ef78..f08295177 100644 --- a/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchQueryTest.java +++ b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchQueryTest.java @@ -12,8 +12,6 @@ public class SearchQueryTest extends AbstractQueryTest{ private QUser user = new QUser("user"); - private LuceneSerializer luceneSerializer = new LuceneSerializer(true); - public void setUp(){ super.setUp(); Session session = getSession(); @@ -36,7 +34,7 @@ public class SearchQueryTest extends AbstractQueryTest{ } private SearchQuery query(){ - return new SearchQuery(getSession(), user, luceneSerializer); + return new SearchQuery(getSession(), user, true); } } diff --git a/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchSerializerTest.java b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchSerializerTest.java new file mode 100644 index 000000000..3cb9109f8 --- /dev/null +++ b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchSerializerTest.java @@ -0,0 +1,17 @@ +package com.mysema.query.search; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class SearchSerializerTest { + + @Test + public void testToField() { + SearchSerializer serializer = new SearchSerializer(true); + QUser user = new QUser("user"); + assertEquals("email", serializer.toField(user.emailAddress)); + assertEquals("firstName", serializer.toField(user.firstName)); + } + +} diff --git a/querydsl-hibernate-search/src/test/java/com/mysema/query/search/User.java b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/User.java index 56c572a5f..abdbfaf15 100644 --- a/querydsl-hibernate-search/src/test/java/com/mysema/query/search/User.java +++ b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/User.java @@ -42,7 +42,7 @@ public class User implements Serializable { private String middleName; @NaturalId - @Field(index = Index.UN_TOKENIZED, store = Store.YES) + @Field(name="email", index = Index.UN_TOKENIZED, store = Store.YES) private String emailAddress; @OneToMany(cascade = { CascadeType.ALL }, mappedBy = "applicant") diff --git a/querydsl-root/pom.xml b/querydsl-root/pom.xml index 6607ffec9..36324e31e 100644 --- a/querydsl-root/pom.xml +++ b/querydsl-root/pom.xml @@ -35,7 +35,8 @@ ../querydsl-maven-plugin ../querydsl-hql ../querydsl-jdoql - ../querydsl-lucene + ../querydsl-lucene + ../querydsl-hibernate-search