diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/APTFactory.java b/querydsl-apt/src/main/java/com/mysema/query/apt/APTFactory.java index a823ee9e2..86f1b23ae 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/APTFactory.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/APTFactory.java @@ -48,7 +48,15 @@ public class APTFactory implements AnnotationProcessorFactory { Set atds, AnnotationProcessorEnvironment env) { try { - return new GeneralProcessor(env, jpaSuperClass, jpaEntity, qdDto, jpaEmbeddable); + try { + // try JPA first + Class.forName(jpaSuperClass); + return new GeneralProcessor(env, jpaSuperClass, jpaEntity, qdDto, jpaEmbeddable); + } catch (ClassNotFoundException e) { + // try Querydsl specific next + return new GeneralProcessor(env, null, qdEntity, qdDto, null); + } + } catch (IOException e) { String error = "Caught " + e.getClass().getName(); throw new RuntimeException(error, e); diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/general/GeneralProcessor.java b/querydsl-apt/src/main/java/com/mysema/query/apt/general/GeneralProcessor.java index 7b34ae1f2..39c1846c9 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/general/GeneralProcessor.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/general/GeneralProcessor.java @@ -78,12 +78,17 @@ public class GeneralProcessor implements AnnotationProcessor { EntityVisitor superclassVisitor = new EntityVisitor(); // mapped superclass - AnnotationTypeDeclaration a = (AnnotationTypeDeclaration) env - .getTypeDeclaration(superClassAnnotation); - for (Declaration typeDecl : env.getDeclarationsAnnotatedWith(a)) { - typeDecl.accept(getDeclarationScanner(superclassVisitor, NO_OP)); - } - Map mappedSupertypes = superclassVisitor.types; + AnnotationTypeDeclaration a; + Map mappedSupertypes; + if (superClassAnnotation != null){ + a = (AnnotationTypeDeclaration) env.getTypeDeclaration(superClassAnnotation); + for (Declaration typeDecl : env.getDeclarationsAnnotatedWith(a)) { + typeDecl.accept(getDeclarationScanner(superclassVisitor, NO_OP)); + } + mappedSupertypes = superclassVisitor.types; + }else{ + mappedSupertypes = new HashMap(); + } // domain types EntityVisitor entityVisitor = new EntityVisitor();