diff --git a/querydsl-scala/pom.xml b/querydsl-scala/pom.xml
index 70c4a2fc0..84d2084a6 100644
--- a/querydsl-scala/pom.xml
+++ b/querydsl-scala/pom.xml
@@ -177,6 +177,14 @@
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ -Xss2m
+
+
org.apache.maven.plugins
diff --git a/querydsl-scala/src/main/scala/com/mysema/query/scala/sql/Serializers.scala b/querydsl-scala/src/main/scala/com/mysema/query/scala/sql/Serializers.scala
index 61b414c3b..b3c62a1a6 100644
--- a/querydsl-scala/src/main/scala/com/mysema/query/scala/sql/Serializers.scala
+++ b/querydsl-scala/src/main/scala/com/mysema/query/scala/sql/Serializers.scala
@@ -56,7 +56,7 @@ class ScalaMetaDataSerializer @Inject() (typeMappings: TypeMappings, val namingS
val fieldName = namingStrategy.getPropertyNameForPrimaryKey(primaryKey.getName(), model)
val value = new StringBuilder("createPrimaryKey(")
value.append(primaryKey.getColumns().map({ column =>
- namingStrategy.getPropertyName(column, model)
+ escape(namingStrategy.getPropertyName(column, model))
}).mkString(", "))
value.append(")")
writer.publicFinal(new ClassType(classOf[PrimaryKey[_]], model), fieldName, value.toString)
@@ -89,7 +89,7 @@ class ScalaMetaDataSerializer @Inject() (typeMappings: TypeMappings, val namingS
local.append(", ")
foreign.append(", ")
}
- local.append(namingStrategy.getPropertyName(foreignKey.getForeignColumns().get(0), model))
+ local.append(escape(namingStrategy.getPropertyName(foreignKey.getForeignColumns().get(0), model)))
foreign.append("\"" + foreignKey.getParentColumns.get(0) + "\"")
i += 1
}
diff --git a/querydsl-scala/src/test/scala/com/mysema/query/scala/CompileTestUtils.scala b/querydsl-scala/src/test/scala/com/mysema/query/scala/CompileTestUtils.scala
index 4b1350dcd..4c9a1c4d9 100644
--- a/querydsl-scala/src/test/scala/com/mysema/query/scala/CompileTestUtils.scala
+++ b/querydsl-scala/src/test/scala/com/mysema/query/scala/CompileTestUtils.scala
@@ -42,4 +42,12 @@ trait CompileTestUtils {
interpreter.close
}
}
+
+ def recursiveFileList(file: File): Array[File] = {
+ if (file.isDirectory) {
+ file.listFiles.flatMap(recursiveFileList(_))
+ } else {
+ Array(file)
+ }
+ }
}
\ No newline at end of file
diff --git a/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/JDBCIntegrationTest.scala b/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/JDBCIntegrationTest.scala
index b9a6fe0ab..0c506b850 100644
--- a/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/JDBCIntegrationTest.scala
+++ b/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/JDBCIntegrationTest.scala
@@ -102,14 +102,6 @@ class JDBCIntegrationTest extends CompileTestUtils {
assertCompileSuccess(recursiveFileList(directory))
}
- private def recursiveFileList(file: File): Array[File] = {
- if (file.isDirectory) {
- file.listFiles.flatMap(recursiveFileList(_))
- } else {
- Array(file)
- }
- }
-
@Test
def Populate_Bean {
assertEquals(2, query from (survey) list (survey) size ())
diff --git a/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/MetaDataExporterTest.scala b/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/MetaDataExporterTest.scala
new file mode 100644
index 000000000..926faf53e
--- /dev/null
+++ b/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/MetaDataExporterTest.scala
@@ -0,0 +1,93 @@
+package com.mysema.query.scala.sql
+
+import org.apache.commons.lang.StringUtils
+import com.mysema.codegen._;
+import com.mysema.codegen.model._;
+
+import com.mysema.query.codegen._;
+import com.mysema.query.sql._
+
+import java.io.StringWriter;
+
+import org.junit._
+import org.junit.Assert._
+
+import scala.collection.JavaConversions._
+
+import com.mysema.query.scala._
+
+class MetaDataExporterTest extends CompileTestUtils {
+
+ var connection: java.sql.Connection = _;
+
+ @Before
+ def setUp() {
+ Class.forName("org.h2.Driver");
+ val url = "jdbc:h2:mem:testdb" + System.currentTimeMillis();
+ connection = java.sql.DriverManager.getConnection(url, "sa", "");
+
+ val stmt = connection.createStatement();
+
+ try{
+ stmt.execute("create table reserved (id int, while int)");
+ stmt.execute("create table underscore (e_id int, c_id int)");
+ stmt.execute("create table beangen1 (\"SEP_Order\" int)");
+ stmt.execute("create table definstance (id int, definstance int, definstance1 int)");
+ stmt.execute("create table pkfk (id int primary key, pk int, fk int)");
+ stmt.execute("create table \"camelCase\" (id int)");
+ stmt.execute("create table \"vwServiceName\" (id int)");
+ stmt.execute("create table date_test (d date)");
+ stmt.execute("create table date_time_test (dt datetime)");
+ stmt.execute("create table survey (id int, name varchar(30))");
+ stmt.execute("create table typetest (type int, constraint pk_typetest primary key(type))");
+
+ stmt.execute("""create table employee(
+ id INT, firstname VARCHAR(50), lastname VARCHAR(50), salary DECIMAL(10, 2),
+ datefield DATE, timefield TIME,
+ superior_id int, survey_id int, survey_name varchar(30),
+ CONSTRAINT PK_employee PRIMARY KEY (id),
+ CONSTRAINT FK_superior FOREIGN KEY (superior_id) REFERENCES employee(id))""");
+
+ // multi key
+ stmt.execute("create table multikey(id INT, id2 VARCHAR, id3 INT, CONSTRAINT pk_multikey PRIMARY KEY (id, id2, id3) )");
+ } finally {
+ stmt.close();
+ }
+ }
+
+ @Test
+ def GenerateWithoutBeanTypes() {
+ val directory = new java.io.File("target/jdbcgen1");
+ val namingStrategy = new DefaultNamingStrategy();
+ val exporter = new MetaDataExporter();
+ exporter.setNamePrefix("Q");
+ exporter.setPackageName("com.mysema");
+ exporter.setTargetFolder(directory);
+ exporter.setSerializerClass(classOf[ScalaMetaDataSerializer]);
+ exporter.setCreateScalaSources(true);
+ exporter.setTypeMappings(ScalaTypeMappings.create);
+ exporter.export(connection.getMetaData);
+
+ assertCompileSuccess(recursiveFileList(directory))
+ }
+
+ @Test
+ def GenerateWithBeanTypes() {
+ val directory = new java.io.File("target/jdbcgen2");
+ val namingStrategy = new DefaultNamingStrategy();
+ val beanSerializer = new ScalaBeanSerializer();
+ val exporter = new MetaDataExporter();
+ exporter.setNamePrefix("Q");
+ exporter.setPackageName("com.mysema");
+ exporter.setTargetFolder(directory);
+ exporter.setSerializerClass(classOf[ScalaMetaDataSerializer]);
+ exporter.setBeanSerializer(beanSerializer)
+ exporter.setCreateScalaSources(true);
+ exporter.setTypeMappings(ScalaTypeMappings.create);
+ exporter.export(connection.getMetaData);
+
+ assertCompileSuccess(recursiveFileList(directory))
+
+ }
+
+}
\ No newline at end of file