diff --git a/querydsl-apt/pom.xml b/querydsl-apt/pom.xml
index 1d2c27774..36e47b376 100644
--- a/querydsl-apt/pom.xml
+++ b/querydsl-apt/pom.xml
@@ -5,7 +5,7 @@
com.mysema.querydsl
querydsl-root
- 0.6.4
+ 0.6.4-SNAPSHOT
com.mysema.querydsl
diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/Processor.java b/querydsl-apt/src/main/java/com/mysema/query/apt/Processor.java
index 50331d9e6..e3b7d7295 100644
--- a/querydsl-apt/src/main/java/com/mysema/query/apt/Processor.java
+++ b/querydsl-apt/src/main/java/com/mysema/query/apt/Processor.java
@@ -77,6 +77,7 @@ public class Processor {
if (conf.getSuperTypeAnn() != null) {
for (Element element : roundEnv.getElementsAnnotatedWith(conf.getSuperTypeAnn())) {
BeanModel model = element.accept(entityVisitor, null);
+ model.setEntityModel(false);
superTypes.put(model.getName(), model);
}
// add supertype fields
@@ -158,8 +159,10 @@ public class Processor {
}
if (stype.equals(model.getSupertypeName())){
model.setSuperModel(sdecl);
- }
- model.include(sdecl);
+ }
+ if (sdecl.isEntityModel()){
+ model.include(sdecl);
+ }
stype = sdecl.getSupertypeName();
}
}
diff --git a/querydsl-collections/pom.xml b/querydsl-collections/pom.xml
index 2bbad1a5b..dca931668 100644
--- a/querydsl-collections/pom.xml
+++ b/querydsl-collections/pom.xml
@@ -5,7 +5,7 @@
com.mysema.querydsl
querydsl-root
- 0.6.4
+ 0.6.4-SNAPSHOT
com.mysema.querydsl
diff --git a/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s1/SEntity1.java b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s1/SEntity1.java
new file mode 100644
index 000000000..b0dccbcc8
--- /dev/null
+++ b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s1/SEntity1.java
@@ -0,0 +1,9 @@
+package com.mysema.query.domain.hierarchy.s1;
+
+import com.mysema.query.annotations.QueryEntity;
+
+@QueryEntity
+public class SEntity1 {
+
+ String entity1Field;
+}
diff --git a/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s2/SEntity2.java b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s2/SEntity2.java
new file mode 100644
index 000000000..5755a983d
--- /dev/null
+++ b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s2/SEntity2.java
@@ -0,0 +1,11 @@
+package com.mysema.query.domain.hierarchy.s2;
+
+import com.mysema.query.annotations.QueryEntity;
+import com.mysema.query.domain.hierarchy.s4.SSupertype;
+
+@QueryEntity
+public class SEntity2 extends SSupertype{
+
+ String entity2Field;
+
+}
diff --git a/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s3/SEntity3.java b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s3/SEntity3.java
new file mode 100644
index 000000000..b2cd8ddb5
--- /dev/null
+++ b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s3/SEntity3.java
@@ -0,0 +1,10 @@
+package com.mysema.query.domain.hierarchy.s3;
+
+import com.mysema.query.annotations.QueryEntity;
+import com.mysema.query.domain.hierarchy.s2.SEntity2;
+
+@QueryEntity
+public class SEntity3 extends SEntity2{
+
+ String entity3Field;
+}
diff --git a/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s4/SSupertype.java b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s4/SSupertype.java
new file mode 100644
index 000000000..969da7a4d
--- /dev/null
+++ b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s4/SSupertype.java
@@ -0,0 +1,10 @@
+package com.mysema.query.domain.hierarchy.s4;
+
+import com.mysema.query.annotations.QuerySupertype;
+
+@QuerySupertype
+public class SSupertype {
+
+ String supertypeField;
+
+}
diff --git a/querydsl-core/pom.xml b/querydsl-core/pom.xml
index 4b4fe65c2..c88d57399 100644
--- a/querydsl-core/pom.xml
+++ b/querydsl-core/pom.xml
@@ -5,7 +5,7 @@
com.mysema.querydsl
querydsl-root
- 0.6.4
+ 0.6.4-SNAPSHOT
com.mysema.querydsl
diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/BeanModel.java b/querydsl-core/src/main/java/com/mysema/query/codegen/BeanModel.java
index bb4d98803..eab5b262b 100644
--- a/querydsl-core/src/main/java/com/mysema/query/codegen/BeanModel.java
+++ b/querydsl-core/src/main/java/com/mysema/query/codegen/BeanModel.java
@@ -35,6 +35,8 @@ public final class BeanModel implements Comparable {
// mutable
private int escapeSuffix = 1;
+ private boolean entityModel = true;
+
private final String simpleName, name, packageName, localName;
private final String prefix;
@@ -203,5 +205,13 @@ public final class BeanModel implements Comparable {
public void setSuperModel(BeanModel superModel) {
this.superModel = superModel;
}
+
+ public boolean isEntityModel() {
+ return entityModel;
+ }
+
+ public void setEntityModel(boolean entityModel) {
+ this.entityModel = entityModel;
+ }
}
\ No newline at end of file
diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java
index 6f87ba261..ed6c58771 100644
--- a/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java
+++ b/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java
@@ -21,8 +21,7 @@ public class EmbeddableSerializer extends EntitySerializer{
}
@Override
- protected void introImports(StringBuilder builder) {
- builder.append("import com.mysema.query.util.*;\n");
+ protected void introImports(StringBuilder builder, BeanModel model) {
builder.append("import com.mysema.query.types.path.*;\n\n");
}
diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java
index 724dc5142..e7a565f8b 100644
--- a/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java
+++ b/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java
@@ -221,7 +221,7 @@ public class EntitySerializer implements Serializer{
protected void intro(BeanModel model, Writer writer) throws IOException {
StringBuilder builder = new StringBuilder();
introPackage(builder, model);
- introImports(builder);
+ introImports(builder, model);
introJavadoc(builder, model);
introClassHeader(builder, model);
introDefaultInstance(builder, model);
@@ -231,18 +231,34 @@ public class EntitySerializer implements Serializer{
private void introSuper(StringBuilder builder, BeanModel model) {
if (model.getSuperModel() != null){
- BeanModel _super = model.getSuperModel();
- final String simpleName = _super.getSimpleName();
- final String queryType = _super.getPrefix() + simpleName;
- builder.append(" public final "+queryType+" _super = new " + queryType + "(this);\n\n");
+ BeanModel superModel = model.getSuperModel();
+ String superQueryType = superModel.getPrefix() + superModel.getSimpleName();
+ if (!superModel.getPackageName().equals(model.getPackageName())){
+ superQueryType = superModel.getPackageName() + "." + superQueryType;
+ }
+
+ if (superModel.isEntityModel()){
+ builder.append(" public final "+superQueryType+" _super = new " + superQueryType + "(this);\n\n");
+ }else{
+ builder.append(" public final "+superQueryType+"<"+model.getLocalName()+"> _super = this;\n\n");
+ }
}
}
protected void introClassHeader(StringBuilder builder, BeanModel model) {
final String queryType = model.getPrefix() + model.getSimpleName();
final String localName = model.getLocalName();
- builder.append("@SuppressWarnings(\"all\")\n");
- builder.append("public class " + queryType + " extends PEntity<" + localName + "> {\n\n");
+ builder.append("@SuppressWarnings(\"serial\")\n");
+ if (model.getSuperModel() != null && !model.getSuperModel().isEntityModel()){
+ BeanModel superModel = model.getSuperModel();
+ String superQueryType = superModel.getPrefix() + superModel.getSimpleName();
+ if (!superModel.getPackageName().equals(model.getPackageName())){
+ superQueryType = superModel.getPackageName() + "." + superQueryType;
+ }
+ builder.append("public class " + queryType + " extends "+superQueryType+"<" + localName + "> {\n\n");
+ }else{
+ builder.append("public class " + queryType + " extends PEntity<" + localName + "> {\n\n");
+ }
}
protected void introDefaultInstance(StringBuilder builder, BeanModel model) {
@@ -252,10 +268,12 @@ public class EntitySerializer implements Serializer{
builder.append(" public static final " + queryType + " " + unscapSimpleName + " = new " + queryType + "(\"" + unscapSimpleName + "\");\n\n");
}
- protected void introImports(StringBuilder builder) {
+ protected void introImports(StringBuilder builder, BeanModel model) {
builder.append("import com.mysema.query.util.*;\n");
builder.append("import com.mysema.query.types.path.*;\n");
- builder.append("import com.mysema.query.types.expr.*;\n");
+ if (!model.getConstructors().isEmpty()){
+ builder.append("import com.mysema.query.types.expr.*;\n");
+ }
}
protected void introJavadoc(StringBuilder builder, BeanModel model) {
diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java
index 8a58cb262..1baf2b4d9 100644
--- a/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java
+++ b/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java
@@ -28,21 +28,37 @@ public class SupertypeSerializer extends EntitySerializer{
}
@Override
- protected void introImports(StringBuilder builder) {
+ protected void introImports(StringBuilder builder, BeanModel model) {
builder.append("import com.mysema.query.util.*;\n");
builder.append("import com.mysema.query.types.path.*;\n\n");
}
+ @Override
+ protected void introClassHeader(StringBuilder builder, BeanModel model) {
+ final String queryType = model.getPrefix() + model.getSimpleName();
+ final String localName = model.getLocalName();
+ builder.append("@SuppressWarnings(\"serial\")\n");
+ if (model.getSuperModel() != null){
+ BeanModel superModel = model.getSuperModel();
+ String superQueryType = superModel.getPrefix() + superModel.getSimpleName();
+ if (!superModel.getPackageName().equals(model.getPackageName())){
+ superQueryType = superModel.getPackageName() + "." + superQueryType;
+ }
+ builder.append("public abstract class " + queryType + " extends "+superQueryType+"<" + localName + "> {\n\n");
+ }else{
+ builder.append("public abstract class " + queryType + " extends PEntity {\n\n");
+ }
+ }
+
@Override
protected void constructors(BeanModel model, Writer writer) throws IOException {
final String simpleName = model.getSimpleName();
final String queryType = model.getPrefix() + simpleName;
- final String localName = model.getLocalName();
StringBuilder builder = new StringBuilder();
- builder.append(" public " + queryType + "(PEntity extends "+localName+"> entity) {\n");
- builder.append(" super(entity.getType(), entity.getEntityName(), entity.getMetadata());\n");
- builder.append(" }\n\n");
+ builder.append(" public "+queryType+"(Class extends T> type, @NotEmpty String entityName, PathMetadata> metadata) {\n");
+ builder.append(" super(type, entityName, metadata);\n");
+ builder.append(" }\n");
writer.append(builder.toString());
}
diff --git a/querydsl-hql/pom.xml b/querydsl-hql/pom.xml
index f80c92e99..2ee12c11b 100644
--- a/querydsl-hql/pom.xml
+++ b/querydsl-hql/pom.xml
@@ -5,7 +5,7 @@
com.mysema.querydsl
querydsl-root
- 0.6.4
+ 0.6.4-SNAPSHOT
com.mysema.querydsl
diff --git a/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java b/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java
index e67dd97d4..857b6b1c2 100644
--- a/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java
+++ b/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java
@@ -22,7 +22,7 @@ public class TypeCastTest {
@Test
public void mappedSuperclass(){
QInheritedProperties subClass = QInheritedProperties.inheritedProperties;
- QSuperclass superClass = new QSuperclass(subClass);
+ QSuperclass superClass = subClass;
assertEquals(InheritedProperties.class, superClass.getType());
assertEquals(InheritedProperties.class.getSimpleName(), superClass.getEntityName());
diff --git a/querydsl-jdoql/pom.xml b/querydsl-jdoql/pom.xml
index ffad9b4ba..5050eeab5 100644
--- a/querydsl-jdoql/pom.xml
+++ b/querydsl-jdoql/pom.xml
@@ -5,7 +5,7 @@
com.mysema.querydsl
querydsl-root
- 0.6.4
+ 0.6.4-SNAPSHOT
com.mysema.querydsl
diff --git a/querydsl-root/pom.xml b/querydsl-root/pom.xml
index 99624cf7d..2ee013cba 100644
--- a/querydsl-root/pom.xml
+++ b/querydsl-root/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.mysema.querydsl
querydsl-root
- 0.6.4
+ 0.6.4-SNAPSHOT
Querydsl
parent project for querydsl modules
http://source.mysema.com/display/querydsl