diff --git a/querydsl-collections/src/test/java/com/mysema/query/ColQueryStandardTest.java b/querydsl-collections/src/test/java/com/mysema/query/ColQueryStandardTest.java index 8564e122c..fb083f141 100644 --- a/querydsl-collections/src/test/java/com/mysema/query/ColQueryStandardTest.java +++ b/querydsl-collections/src/test/java/com/mysema/query/ColQueryStandardTest.java @@ -1,5 +1,7 @@ package com.mysema.query; +import static org.junit.Assert.*; + import java.util.Arrays; import java.util.List; @@ -50,6 +52,14 @@ public class ColQueryStandardTest { } } + @Test + public void matchingStringFilters(){ + for (EBoolean f : TestFilters.getMatchingFilters(cat.name, otherCat.name, "Bob")){ + System.out.println(f); + assertTrue(!MiniApi.from(cat, data).from(otherCat, data).where(f).list(cat.name).isEmpty()); + } + } + @Test public void booleanFilters(){ for (EBoolean f : TestFilters.getFiltersForBoolean(cat.name.isNull(), otherCat.kittens.isEmpty())){ diff --git a/querydsl-core/src/test/java/com/mysema/query/TestFilters.java b/querydsl-core/src/test/java/com/mysema/query/TestFilters.java index aa80679d3..9cf63ab07 100644 --- a/querydsl-core/src/test/java/com/mysema/query/TestFilters.java +++ b/querydsl-core/src/test/java/com/mysema/query/TestFilters.java @@ -108,6 +108,36 @@ public abstract class TestFilters { return rv; } + public static Collection getMatchingFilters(EString expr, EString other, String knownValue){ + return Arrays.asList( + expr.eq(other), + expr.eq(knownValue), + expr.ne(other), + expr.ne(knownValue), + expr.equalsIgnoreCase(other), + expr.equalsIgnoreCase(knownValue), + expr.lower().eq(other.lower()), + expr.upper().eq(other.upper()), + expr.lower().eq(knownValue.toLowerCase()), + expr.charAt(0).eq(other.charAt(0)), + expr.endsWith(other), + expr.endsWith(knownValue), + expr.startsWith(other), + expr.startsWith(knownValue), + expr.contains(other), + expr.contains(knownValue), + other.startsWith(expr), + other.endsWith(expr), + other.contains(expr), + expr.substring(0,1).eq(other.substring(0,1)), + expr.substring(1).eq(other.substring(1)), + expr.substring(0,1).eq(knownValue.substring(0,1)), + expr.substring(1).eq(knownValue.substring(1)), + expr.like(knownValue), + other.like(knownValue) + ); + } + private TestFilters(){} } diff --git a/querydsl-jdoql-apt/src/main/java/com/mysema/query/jdoql/apt/JDOAnnotationProcessor.java b/querydsl-jdoql-apt/src/main/java/com/mysema/query/jdoql/apt/JDOAnnotationProcessor.java index cf4e4032f..7bd0d908e 100644 --- a/querydsl-jdoql-apt/src/main/java/com/mysema/query/jdoql/apt/JDOAnnotationProcessor.java +++ b/querydsl-jdoql-apt/src/main/java/com/mysema/query/jdoql/apt/JDOAnnotationProcessor.java @@ -7,6 +7,7 @@ import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedSourceVersion; +import javax.jdo.annotations.EmbeddedOnly; import javax.jdo.annotations.PersistenceCapable; import javax.lang.model.SourceVersion; import javax.lang.model.element.TypeElement; @@ -28,7 +29,7 @@ public class JDOAnnotationProcessor extends AbstractProcessor{ processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Running " + getClass().getSimpleName()); Class entity = PersistenceCapable.class; Class superType = null; - Class embeddable = null; + Class embeddable = EmbeddedOnly.class; Class dtoAnnotation = DTO.class; Processor p = new Processor(processingEnv, entity, superType, embeddable, dtoAnnotation, "Q"); p.process(roundEnv); diff --git a/querydsl-jdoql/src/test/java/com/mysema/query/JDOQLQueryStandardTest.java b/querydsl-jdoql/src/test/java/com/mysema/query/JDOQLQueryStandardTest.java index c097a1013..d1a9664e4 100644 --- a/querydsl-jdoql/src/test/java/com/mysema/query/JDOQLQueryStandardTest.java +++ b/querydsl-jdoql/src/test/java/com/mysema/query/JDOQLQueryStandardTest.java @@ -1,5 +1,7 @@ package com.mysema.query; +import static org.junit.Assert.*; + import javax.jdo.PersistenceManager; import javax.jdo.Transaction; @@ -44,6 +46,14 @@ public class JDOQLQueryStandardTest extends AbstractJDOTest{ } } + @Test + public void matchingStringFilters(){ + for (EBoolean f : TestFilters.getMatchingFilters(product.name, otherProduct.name, "C5")){ + System.out.println(f); + assertTrue(!query().from(product, otherProduct).where(f).list(product.name, otherProduct.name).isEmpty()); + } + } + @BeforeClass public static void doPersist() { // Persistence of a Product and a Book.