diff --git a/querydsl-jpa/src/main/java/com/querydsl/jpa/NativeSQLSerializer.java b/querydsl-jpa/src/main/java/com/querydsl/jpa/NativeSQLSerializer.java index cffbc893f..7cb047285 100644 --- a/querydsl-jpa/src/main/java/com/querydsl/jpa/NativeSQLSerializer.java +++ b/querydsl-jpa/src/main/java/com/querydsl/jpa/NativeSQLSerializer.java @@ -57,7 +57,11 @@ public final class NativeSQLSerializer extends SQLSerializer { if (path.getAnnotatedElement().isAnnotationPresent(Column.class)) { SQLTemplates templates = getTemplates(); Column column = path.getAnnotatedElement().getAnnotation(Column.class); - append(templates.quoteIdentifier(column.name(), precededByDot)); + if (!column.name().isEmpty()) { + append(templates.quoteIdentifier(column.name(), precededByDot)); + } else { + super.appendAsColumnName(path, precededByDot); + } } else { super.appendAsColumnName(path, precededByDot); } diff --git a/querydsl-jpa/src/test/java/com/querydsl/jpa/NativeSQLSerializerTest.java b/querydsl-jpa/src/test/java/com/querydsl/jpa/NativeSQLSerializerTest.java index a03349dc2..10b9f64d8 100644 --- a/querydsl-jpa/src/test/java/com/querydsl/jpa/NativeSQLSerializerTest.java +++ b/querydsl-jpa/src/test/java/com/querydsl/jpa/NativeSQLSerializerTest.java @@ -15,10 +15,13 @@ package com.querydsl.jpa; import static org.junit.Assert.assertEquals; +import javax.persistence.Column; + import org.junit.Test; import com.querydsl.core.DefaultQueryMetadata; import com.querydsl.core.JoinType; +import com.querydsl.core.types.path.PathBuilder; import com.querydsl.jpa.domain.sql.SAnimal; import com.querydsl.sql.Configuration; import com.querydsl.sql.MySQLTemplates; @@ -26,6 +29,14 @@ import com.querydsl.sql.MySQLTemplates; public class NativeSQLSerializerTest { + public static class Entity { + @Column + private String name; + + @Column(name="first_name") + private String firstName; + } + @Test public void In() { Configuration conf = new Configuration(new MySQLTemplates()); @@ -41,4 +52,22 @@ public class NativeSQLSerializerTest { "where animal_.name in (?1, ?2)", serializer.toString()); } + @Test + public void Path_Column() { + PathBuilder entity = new PathBuilder(Entity.class,"entity"); + Configuration conf = new Configuration(new MySQLTemplates()); + NativeSQLSerializer serializer = new NativeSQLSerializer(conf, true); + serializer.handle(entity.get("name")); + assertEquals("entity.name", serializer.toString()); + } + + @Test + public void Path_Column2() { + PathBuilder entity = new PathBuilder(Entity.class,"entity"); + Configuration conf = new Configuration(new MySQLTemplates()); + NativeSQLSerializer serializer = new NativeSQLSerializer(conf, true); + serializer.handle(entity.get("firstName")); + assertEquals("entity.first_name", serializer.toString()); + } + }