mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-21 21:14:12 +08:00
added hibernate search module
This commit is contained in:
parent
6d0213ef89
commit
aed9aed3e7
@ -39,15 +39,15 @@ public class SearchQuery<T> implements SimpleQuery<SearchQuery<T>>, SimpleProjec
|
||||
|
||||
private final PEntity<T> path;
|
||||
|
||||
public SearchQuery(Session session, PEntity<T> path, LuceneSerializer serializer) {
|
||||
this(Search.getFullTextSession(session), path, serializer);
|
||||
public SearchQuery(Session session, PEntity<T> path, boolean lower) {
|
||||
this(Search.getFullTextSession(session), path, lower);
|
||||
}
|
||||
|
||||
public SearchQuery(FullTextSession session, PEntity<T> path, LuceneSerializer serializer) {
|
||||
public SearchQuery(FullTextSession session, PEntity<T> path, boolean lower) {
|
||||
this.queryMixin = new QueryMixin<SearchQuery<T>>(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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<User> query(){
|
||||
return new SearchQuery<User>(getSession(), user, luceneSerializer);
|
||||
return new SearchQuery<User>(getSession(), user, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
@ -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")
|
||||
|
||||
@ -35,7 +35,8 @@
|
||||
<module>../querydsl-maven-plugin</module>
|
||||
<module>../querydsl-hql</module>
|
||||
<module>../querydsl-jdoql</module>
|
||||
<module>../querydsl-lucene</module>
|
||||
<module>../querydsl-lucene</module>
|
||||
<module>../querydsl-hibernate-search</module>
|
||||
<!--
|
||||
<module>../querydsl-docs</module>
|
||||
-->
|
||||
|
||||
Loading…
Reference in New Issue
Block a user