From 5ef01bf8710872e1db4de242a328761156ee53fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 7 Apr 2014 15:41:19 +0300 Subject: [PATCH] Escape top level variables for OpenJPA --- .../mysema/query/jpa/OpenJPATemplates.java | 2 ++ .../mysema/query/jpa/JPQLSerializerTest.java | 24 ++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/querydsl-jpa/src/main/java/com/mysema/query/jpa/OpenJPATemplates.java b/querydsl-jpa/src/main/java/com/mysema/query/jpa/OpenJPATemplates.java index 0e0fe417c..fbef17757 100644 --- a/querydsl-jpa/src/main/java/com/mysema/query/jpa/OpenJPATemplates.java +++ b/querydsl-jpa/src/main/java/com/mysema/query/jpa/OpenJPATemplates.java @@ -14,6 +14,7 @@ package com.mysema.query.jpa; import com.mysema.query.types.Ops; +import com.mysema.query.types.PathType; /** * OpenJPATemplates extends JPQLTemplates with OpenJPA specific extensions @@ -27,6 +28,7 @@ public class OpenJPATemplates extends JPQLTemplates{ public OpenJPATemplates() { this(DEFAULT_ESCAPE); + add(PathType.VARIABLE, "{0s}_"); add(Ops.ALIAS, "{0} {1}"); add(Ops.NEGATE, "-1 * {0}", 7); } diff --git a/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPQLSerializerTest.java b/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPQLSerializerTest.java index 6e14eebee..f9e5285bf 100644 --- a/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPQLSerializerTest.java +++ b/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPQLSerializerTest.java @@ -13,12 +13,6 @@ */ package com.mysema.query.jpa; -import static org.junit.Assert.assertEquals; - -import java.util.Arrays; - -import org.junit.Test; - import com.mysema.query.DefaultQueryMetadata; import com.mysema.query.JoinType; import com.mysema.query.QueryMetadata; @@ -32,6 +26,11 @@ import com.mysema.query.types.Predicate; import com.mysema.query.types.path.EntityPathBase; import com.mysema.query.types.path.NumberPath; import com.mysema.query.types.path.StringPath; +import org.junit.Test; + +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; public class JPQLSerializerTest { @@ -196,4 +195,17 @@ public class JPQLSerializerTest { "from Cat cat\n" + "order by cat.name asc nulls last", serializer.toString()); } + + @Test + public void OpenJPA_Variables() { + QCat cat = QCat.cat; + JPQLSerializer serializer = new JPQLSerializer(OpenJPATemplates.DEFAULT); + QueryMetadata md = new DefaultQueryMetadata(); + md.addJoin(JoinType.DEFAULT, cat); + md.addJoin(JoinType.INNERJOIN, cat.mate); + md.addJoinCondition(cat.mate.alive); + serializer.serialize(md, false, null); + assertEquals("select cat_\nfrom Cat cat_\n inner join cat_.mate on cat_.mate.alive", + serializer.toString()); + } }