You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2014/11/02 08:10:07 UTC

[19/48] Installing Maven Failsafe Plugin

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
new file mode 100644
index 0000000..cdf65e3
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
@@ -0,0 +1,207 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.access;
+
+import org.apache.cayenne.DataRow;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.query.MockQueryMetadata;
+import org.apache.cayenne.query.PrefetchTreeNode;
+import org.apache.cayenne.query.QueryMetadata;
+import org.apache.cayenne.reflect.ClassDescriptor;
+import org.apache.cayenne.testdo.testmap.Artist;
+import org.apache.cayenne.testdo.testmap.Gallery;
+import org.apache.cayenne.testdo.testmap.Painting;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class PrefetchProcessorTreeBuilderIT extends ServerCase {
+
+    @Inject
+    private DataContext context;
+
+    @Inject
+    private EntityResolver resolver;
+
+    public void testBuildTreeNoPrefetches() {
+
+        final ClassDescriptor descriptor = resolver.getClassDescriptor("Artist");
+        List<Object> dataRows = new ArrayList<Object>();
+        dataRows.add(new DataRow(4));
+        dataRows.add(new DataRow(4));
+
+        QueryMetadata metadata = new MockQueryMetadata() {
+
+            @Override
+            public ClassDescriptor getClassDescriptor() {
+                return descriptor;
+            }
+
+            @Override
+            public ObjEntity getObjEntity() {
+                return descriptor.getEntity();
+            }
+
+            @Override
+            public DbEntity getDbEntity() {
+                return getObjEntity().getDbEntity();
+            }
+
+            @Override
+            public DataMap getDataMap() {
+                return getObjEntity().getDataMap();
+            }
+
+            @Override
+            public boolean isRefreshingObjects() {
+                return true;
+            }
+
+            @Override
+            public boolean isResolvingInherited() {
+                return true;
+            }
+        };
+
+        PrefetchTreeNode tree = new PrefetchTreeNode();
+        HierarchicalObjectResolver resolver = new HierarchicalObjectResolver(
+                context,
+                metadata);
+        PrefetchProcessorTreeBuilder builder = new PrefetchProcessorTreeBuilder(
+                resolver,
+                dataRows,
+                new HashMap<Object, Object>());
+
+        PrefetchProcessorNode processingTree = builder.buildTree(tree);
+
+        assertTrue(processingTree.getChildren().isEmpty());
+        assertFalse(processingTree.isPhantom());
+        assertFalse(processingTree.isPartitionedByParent());
+        assertTrue(processingTree.isDisjointPrefetch());
+        assertSame(dataRows, processingTree.getDataRows());
+        assertSame(descriptor.getEntity(), processingTree.getResolver().getEntity());
+        assertNull(processingTree.getIncoming());
+    }
+
+    public void testBuildTreeWithPrefetches() {
+
+        final ClassDescriptor descriptor = resolver.getClassDescriptor("Artist");
+        ObjEntity e2 = resolver.getObjEntity("Painting");
+        ObjEntity e3 = resolver.getObjEntity("Gallery");
+        ObjEntity e4 = resolver.getObjEntity("Exhibit");
+        ObjEntity e5 = resolver.getObjEntity("ArtistExhibit");
+
+        List<Object> mainRows = new ArrayList<Object>();
+        Map<Object, Object> extraRows = new HashMap<Object, Object>();
+
+        PrefetchTreeNode tree = new PrefetchTreeNode();
+        tree.addPath(Artist.PAINTING_ARRAY_PROPERTY).setPhantom(false);
+        tree.addPath(
+                Artist.PAINTING_ARRAY_PROPERTY
+                        + "."
+                        + Painting.TO_GALLERY_PROPERTY
+                        + "."
+                        + Gallery.EXHIBIT_ARRAY_PROPERTY).setPhantom(false);
+        tree.addPath(Artist.ARTIST_EXHIBIT_ARRAY_PROPERTY).setPhantom(false);
+
+        QueryMetadata metadata = new MockQueryMetadata() {
+
+            @Override
+            public ClassDescriptor getClassDescriptor() {
+                return descriptor;
+            }
+
+            @Override
+            public ObjEntity getObjEntity() {
+                return descriptor.getEntity();
+            }
+
+            @Override
+            public DbEntity getDbEntity() {
+                return getObjEntity().getDbEntity();
+            }
+
+            @Override
+            public DataMap getDataMap() {
+                return getObjEntity().getDataMap();
+            }
+
+            @Override
+            public boolean isRefreshingObjects() {
+                return true;
+            }
+
+            @Override
+            public boolean isResolvingInherited() {
+                return true;
+            }
+        };
+
+        HierarchicalObjectResolver resolver = new HierarchicalObjectResolver(
+                context,
+                metadata);
+        PrefetchProcessorTreeBuilder builder = new PrefetchProcessorTreeBuilder(
+                resolver,
+                mainRows,
+                extraRows);
+
+        PrefetchProcessorNode n1 = builder.buildTree(tree);
+
+        assertSame(mainRows, n1.getDataRows());
+        assertSame(descriptor.getEntity(), n1.getResolver().getEntity());
+
+        PrefetchProcessorNode n2 = (PrefetchProcessorNode) n1.getNode("paintingArray");
+        assertNotNull(n2);
+        assertSame(e2, n2.getResolver().getEntity());
+        assertFalse(n2.isPhantom());
+        assertTrue(n2.isPartitionedByParent());
+
+        PrefetchProcessorNode n3 = (PrefetchProcessorNode) n1
+                .getNode("paintingArray.toGallery");
+        assertNotNull(n3);
+        assertSame(e3, n3.getResolver().getEntity());
+        assertTrue(n3.isPhantom());
+        assertTrue(n3.isPartitionedByParent());
+
+        PrefetchProcessorNode n4 = (PrefetchProcessorNode) n1
+                .getNode("paintingArray.toGallery.exhibitArray");
+        assertNotNull(n4);
+        assertSame(e4, n4.getResolver().getEntity());
+        assertFalse(n4.isPhantom());
+        assertTrue(n4.isPartitionedByParent());
+
+        PrefetchProcessorNode n5 = (PrefetchProcessorNode) n1
+                .getNode("artistExhibitArray");
+        assertNotNull(n5);
+        assertSame(e5, n5.getResolver().getEntity());
+        assertFalse(n5.isPhantom());
+        assertTrue(n5.isPartitionedByParent());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderTest.java
deleted file mode 100644
index 0ad6c0a..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderTest.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-
-package org.apache.cayenne.access;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.cayenne.DataRow;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.query.MockQueryMetadata;
-import org.apache.cayenne.query.PrefetchTreeNode;
-import org.apache.cayenne.query.QueryMetadata;
-import org.apache.cayenne.reflect.ClassDescriptor;
-import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.testdo.testmap.Gallery;
-import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-
-@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
-public class PrefetchProcessorTreeBuilderTest extends ServerCase {
-
-    @Inject
-    private DataContext context;
-
-    @Inject
-    private EntityResolver resolver;
-
-    public void testBuildTreeNoPrefetches() {
-
-        final ClassDescriptor descriptor = resolver.getClassDescriptor("Artist");
-        List<Object> dataRows = new ArrayList<Object>();
-        dataRows.add(new DataRow(4));
-        dataRows.add(new DataRow(4));
-
-        QueryMetadata metadata = new MockQueryMetadata() {
-
-            @Override
-            public ClassDescriptor getClassDescriptor() {
-                return descriptor;
-            }
-
-            @Override
-            public ObjEntity getObjEntity() {
-                return descriptor.getEntity();
-            }
-
-            @Override
-            public DbEntity getDbEntity() {
-                return getObjEntity().getDbEntity();
-            }
-
-            @Override
-            public DataMap getDataMap() {
-                return getObjEntity().getDataMap();
-            }
-
-            @Override
-            public boolean isRefreshingObjects() {
-                return true;
-            }
-
-            @Override
-            public boolean isResolvingInherited() {
-                return true;
-            }
-        };
-
-        PrefetchTreeNode tree = new PrefetchTreeNode();
-        HierarchicalObjectResolver resolver = new HierarchicalObjectResolver(
-                context,
-                metadata);
-        PrefetchProcessorTreeBuilder builder = new PrefetchProcessorTreeBuilder(
-                resolver,
-                dataRows,
-                new HashMap<Object, Object>());
-
-        PrefetchProcessorNode processingTree = builder.buildTree(tree);
-
-        assertTrue(processingTree.getChildren().isEmpty());
-        assertFalse(processingTree.isPhantom());
-        assertFalse(processingTree.isPartitionedByParent());
-        assertTrue(processingTree.isDisjointPrefetch());
-        assertSame(dataRows, processingTree.getDataRows());
-        assertSame(descriptor.getEntity(), processingTree.getResolver().getEntity());
-        assertNull(processingTree.getIncoming());
-    }
-
-    public void testBuildTreeWithPrefetches() {
-
-        final ClassDescriptor descriptor = resolver.getClassDescriptor("Artist");
-        ObjEntity e2 = resolver.getObjEntity("Painting");
-        ObjEntity e3 = resolver.getObjEntity("Gallery");
-        ObjEntity e4 = resolver.getObjEntity("Exhibit");
-        ObjEntity e5 = resolver.getObjEntity("ArtistExhibit");
-
-        List<Object> mainRows = new ArrayList<Object>();
-        Map<Object, Object> extraRows = new HashMap<Object, Object>();
-
-        PrefetchTreeNode tree = new PrefetchTreeNode();
-        tree.addPath(Artist.PAINTING_ARRAY_PROPERTY).setPhantom(false);
-        tree.addPath(
-                Artist.PAINTING_ARRAY_PROPERTY
-                        + "."
-                        + Painting.TO_GALLERY_PROPERTY
-                        + "."
-                        + Gallery.EXHIBIT_ARRAY_PROPERTY).setPhantom(false);
-        tree.addPath(Artist.ARTIST_EXHIBIT_ARRAY_PROPERTY).setPhantom(false);
-
-        QueryMetadata metadata = new MockQueryMetadata() {
-
-            @Override
-            public ClassDescriptor getClassDescriptor() {
-                return descriptor;
-            }
-
-            @Override
-            public ObjEntity getObjEntity() {
-                return descriptor.getEntity();
-            }
-
-            @Override
-            public DbEntity getDbEntity() {
-                return getObjEntity().getDbEntity();
-            }
-
-            @Override
-            public DataMap getDataMap() {
-                return getObjEntity().getDataMap();
-            }
-
-            @Override
-            public boolean isRefreshingObjects() {
-                return true;
-            }
-
-            @Override
-            public boolean isResolvingInherited() {
-                return true;
-            }
-        };
-
-        HierarchicalObjectResolver resolver = new HierarchicalObjectResolver(
-                context,
-                metadata);
-        PrefetchProcessorTreeBuilder builder = new PrefetchProcessorTreeBuilder(
-                resolver,
-                mainRows,
-                extraRows);
-
-        PrefetchProcessorNode n1 = builder.buildTree(tree);
-
-        assertSame(mainRows, n1.getDataRows());
-        assertSame(descriptor.getEntity(), n1.getResolver().getEntity());
-
-        PrefetchProcessorNode n2 = (PrefetchProcessorNode) n1.getNode("paintingArray");
-        assertNotNull(n2);
-        assertSame(e2, n2.getResolver().getEntity());
-        assertFalse(n2.isPhantom());
-        assertTrue(n2.isPartitionedByParent());
-
-        PrefetchProcessorNode n3 = (PrefetchProcessorNode) n1
-                .getNode("paintingArray.toGallery");
-        assertNotNull(n3);
-        assertSame(e3, n3.getResolver().getEntity());
-        assertTrue(n3.isPhantom());
-        assertTrue(n3.isPartitionedByParent());
-
-        PrefetchProcessorNode n4 = (PrefetchProcessorNode) n1
-                .getNode("paintingArray.toGallery.exhibitArray");
-        assertNotNull(n4);
-        assertSame(e4, n4.getResolver().getEntity());
-        assertFalse(n4.isPhantom());
-        assertTrue(n4.isPartitionedByParent());
-
-        PrefetchProcessorNode n5 = (PrefetchProcessorNode) n1
-                .getNode("artistExhibitArray");
-        assertNotNull(n5);
-        assertSame(e5, n5.getResolver().getEntity());
-        assertFalse(n5.isPhantom());
-        assertTrue(n5.isPartitionedByParent());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
new file mode 100644
index 0000000..f16395d
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
@@ -0,0 +1,47 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.access;
+
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.testdo.testmap.PrimitivesTestEntity;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class PrimitiveAttributesIT extends ServerCase {
+
+    @Inject
+    private DataContext context;
+
+    @Inject
+    private DBHelper dbHelper;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("PRIMITIVES_TEST");
+    }
+
+    public void testCommit() {
+        PrimitivesTestEntity e = context.newObject(PrimitivesTestEntity.class);
+        e.setBooleanColumn(true);
+        e.setIntColumn(88);
+        context.commitChanges();
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/access/PrimitiveAttributesTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/PrimitiveAttributesTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/PrimitiveAttributesTest.java
deleted file mode 100644
index 86ca404..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/PrimitiveAttributesTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.access;
-
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.test.jdbc.DBHelper;
-import org.apache.cayenne.testdo.testmap.PrimitivesTestEntity;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-
-@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
-public class PrimitiveAttributesTest extends ServerCase {
-
-    @Inject
-    private DataContext context;
-
-    @Inject
-    private DBHelper dbHelper;
-
-    @Override
-    protected void setUpAfterInjection() throws Exception {
-        dbHelper.deleteAll("PRIMITIVES_TEST");
-    }
-
-    public void testCommit() {
-        PrimitivesTestEntity e = context.newObject(PrimitivesTestEntity.class);
-        e.setBooleanColumn(true);
-        e.setIntColumn(88);
-        context.commitChanges();
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
new file mode 100644
index 0000000..de7f72a
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
@@ -0,0 +1,156 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.access;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.ObjectId;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.exp.ExpressionFactory;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.query.EJBQLQuery;
+import org.apache.cayenne.query.ObjectIdQuery;
+import org.apache.cayenne.query.RelationshipQuery;
+import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.query.UpdateBatchQuery;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.testdo.quotemap.QuoteAdress;
+import org.apache.cayenne.testdo.quotemap.Quote_Person;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+@UseServerRuntime(ServerCase.QUOTED_IDENTIFIERS_PROJECT)
+public class QuotedIdentifiersIT extends ServerCase {
+
+    @Inject
+    private ObjectContext context;
+
+    @Inject
+    private DBHelper dbHelper;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("quote Person");
+        dbHelper.deleteAll("QUOTED_ADDRESS");
+
+        QuoteAdress quoteAdress = context.newObject(QuoteAdress.class);
+        quoteAdress.setCity("city");
+        quoteAdress.setGroup("324");
+
+        Quote_Person quote_Person = context.newObject(Quote_Person.class);
+        quote_Person.setSalary(10000);
+        quote_Person.setName("Arcadi");
+        quote_Person.setGroup("107324");
+        quote_Person.setAddress_Rel(quoteAdress);
+
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(QuoteAdress.class);
+        List objects = context.performQuery(q);
+        assertEquals(1, objects.size());
+
+        SelectQuery qQuote_Person = new SelectQuery(Quote_Person.class);
+        List objects2 = context.performQuery(qQuote_Person);
+        assertEquals(1, objects2.size());
+
+        QuoteAdress quoteAdress2 = context.newObject(QuoteAdress.class);
+        quoteAdress2.setCity("city2");
+
+        Quote_Person quote_Person2 = context.newObject(Quote_Person.class);
+        quote_Person2.setSalary(100);
+        quote_Person2.setName("Name");
+        quote_Person2.setGroup("1111");
+        quote_Person2.setDAte(new Date());
+        quote_Person2.setAddress_Rel(quoteAdress2);
+
+        context.commitChanges();
+    }
+
+    public void testPrefetchQuote() throws Exception {
+        DbEntity entity = context.getEntityResolver().getObjEntity(QuoteAdress.class).getDbEntity();
+        List idAttributes = Collections.singletonList(entity.getAttribute("City"));
+        List updatedAttributes = Collections.singletonList(entity.getAttribute("City"));
+
+        UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
+                Collections.<String> emptySet(), 1);
+
+        List objects3 = context.performQuery(updateQuery);
+        assertEquals(0, objects3.size());
+
+        SelectQuery qQuote_Person2 = new SelectQuery(Quote_Person.class);
+        List objects4 = context.performQuery(qQuote_Person2);
+        assertEquals(2, objects4.size());
+
+        SelectQuery qQuote_Person3 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("salary", 100));
+        List objects5 = context.performQuery(qQuote_Person3);
+        assertEquals(1, objects5.size());
+
+        SelectQuery qQuote_Person4 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("group", "107324"));
+        List objects6 = context.performQuery(qQuote_Person4);
+        assertEquals(1, objects6.size());
+
+        SelectQuery quoteAdress1 = new SelectQuery(QuoteAdress.class, ExpressionFactory.matchExp("group", "324"));
+        List objects7 = context.performQuery(quoteAdress1);
+        assertEquals(1, objects7.size());
+
+        ObjectIdQuery queryObjectId = new ObjectIdQuery(new ObjectId("QuoteAdress", QuoteAdress.GROUP_PROPERTY, "324"));
+
+        List objects8 = context.performQuery(queryObjectId);
+        assertEquals(1, objects8.size());
+
+        ObjectIdQuery queryObjectId2 = new ObjectIdQuery(new ObjectId("Quote_Person", "GROUP", "1111"));
+        List objects9 = context.performQuery(queryObjectId2);
+        assertEquals(1, objects9.size());
+
+        SelectQuery person2Query = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("name", "Name"));
+        Quote_Person quote_Person2 = (Quote_Person) context.performQuery(person2Query).get(0);
+
+        RelationshipQuery relationshipQuery = new RelationshipQuery(quote_Person2.getObjectId(), "address_Rel");
+        List objects10 = context.performQuery(relationshipQuery);
+        assertEquals(1, objects10.size());
+    }
+
+    public void testQuotedEJBQLQuery() throws Exception {
+        String ejbql = "select a from QuoteAdress a where a.group = '324'";
+        EJBQLQuery queryEJBQL = new EJBQLQuery(ejbql);
+        List objects11 = context.performQuery(queryEJBQL);
+        assertEquals(1, objects11.size());
+    }
+
+    public void testQuotedEJBQLQueryWithJoin() throws Exception {
+        String ejbql = "select p from Quote_Person p join p.address_Rel a where p.name = 'Arcadi'";
+        EJBQLQuery queryEJBQL = new EJBQLQuery(ejbql);
+        List resultList = context.performQuery(queryEJBQL);
+        assertEquals(1, resultList.size());
+    }
+
+    public void testQuotedEJBQLQueryWithOrderBy() throws Exception {
+        EJBQLQuery query = new EJBQLQuery("select p from Quote_Person p order by p.name");
+
+        List<Quote_Person> resultList = (List<Quote_Person>) context.performQuery(query);
+
+        assertEquals(2, resultList.size());
+        assertEquals("Arcadi", resultList.get(0).getName());
+        assertEquals("Name", resultList.get(1).getName());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersTest.java
deleted file mode 100644
index dc9887a..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.access;
-
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.ObjectId;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.query.EJBQLQuery;
-import org.apache.cayenne.query.ObjectIdQuery;
-import org.apache.cayenne.query.RelationshipQuery;
-import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.UpdateBatchQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
-import org.apache.cayenne.testdo.quotemap.QuoteAdress;
-import org.apache.cayenne.testdo.quotemap.Quote_Person;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-
-@UseServerRuntime(ServerCase.QUOTED_IDENTIFIERS_PROJECT)
-public class QuotedIdentifiersTest extends ServerCase {
-
-    @Inject
-    private ObjectContext context;
-
-    @Inject
-    private DBHelper dbHelper;
-
-    @Override
-    protected void setUpAfterInjection() throws Exception {
-        dbHelper.deleteAll("quote Person");
-        dbHelper.deleteAll("QUOTED_ADDRESS");
-
-        QuoteAdress quoteAdress = context.newObject(QuoteAdress.class);
-        quoteAdress.setCity("city");
-        quoteAdress.setGroup("324");
-
-        Quote_Person quote_Person = context.newObject(Quote_Person.class);
-        quote_Person.setSalary(10000);
-        quote_Person.setName("Arcadi");
-        quote_Person.setGroup("107324");
-        quote_Person.setAddress_Rel(quoteAdress);
-
-        context.commitChanges();
-
-        SelectQuery q = new SelectQuery(QuoteAdress.class);
-        List objects = context.performQuery(q);
-        assertEquals(1, objects.size());
-
-        SelectQuery qQuote_Person = new SelectQuery(Quote_Person.class);
-        List objects2 = context.performQuery(qQuote_Person);
-        assertEquals(1, objects2.size());
-
-        QuoteAdress quoteAdress2 = context.newObject(QuoteAdress.class);
-        quoteAdress2.setCity("city2");
-
-        Quote_Person quote_Person2 = context.newObject(Quote_Person.class);
-        quote_Person2.setSalary(100);
-        quote_Person2.setName("Name");
-        quote_Person2.setGroup("1111");
-        quote_Person2.setDAte(new Date());
-        quote_Person2.setAddress_Rel(quoteAdress2);
-
-        context.commitChanges();
-    }
-
-    public void testPrefetchQuote() throws Exception {
-        DbEntity entity = context.getEntityResolver().getObjEntity(QuoteAdress.class).getDbEntity();
-        List idAttributes = Collections.singletonList(entity.getAttribute("City"));
-        List updatedAttributes = Collections.singletonList(entity.getAttribute("City"));
-
-        UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
-                Collections.<String> emptySet(), 1);
-
-        List objects3 = context.performQuery(updateQuery);
-        assertEquals(0, objects3.size());
-
-        SelectQuery qQuote_Person2 = new SelectQuery(Quote_Person.class);
-        List objects4 = context.performQuery(qQuote_Person2);
-        assertEquals(2, objects4.size());
-
-        SelectQuery qQuote_Person3 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("salary", 100));
-        List objects5 = context.performQuery(qQuote_Person3);
-        assertEquals(1, objects5.size());
-
-        SelectQuery qQuote_Person4 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("group", "107324"));
-        List objects6 = context.performQuery(qQuote_Person4);
-        assertEquals(1, objects6.size());
-
-        SelectQuery quoteAdress1 = new SelectQuery(QuoteAdress.class, ExpressionFactory.matchExp("group", "324"));
-        List objects7 = context.performQuery(quoteAdress1);
-        assertEquals(1, objects7.size());
-
-        ObjectIdQuery queryObjectId = new ObjectIdQuery(new ObjectId("QuoteAdress", QuoteAdress.GROUP_PROPERTY, "324"));
-
-        List objects8 = context.performQuery(queryObjectId);
-        assertEquals(1, objects8.size());
-
-        ObjectIdQuery queryObjectId2 = new ObjectIdQuery(new ObjectId("Quote_Person", "GROUP", "1111"));
-        List objects9 = context.performQuery(queryObjectId2);
-        assertEquals(1, objects9.size());
-
-        SelectQuery person2Query = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("name", "Name"));
-        Quote_Person quote_Person2 = (Quote_Person) context.performQuery(person2Query).get(0);
-
-        RelationshipQuery relationshipQuery = new RelationshipQuery(quote_Person2.getObjectId(), "address_Rel");
-        List objects10 = context.performQuery(relationshipQuery);
-        assertEquals(1, objects10.size());
-    }
-
-    public void testQuotedEJBQLQuery() throws Exception {
-        String ejbql = "select a from QuoteAdress a where a.group = '324'";
-        EJBQLQuery queryEJBQL = new EJBQLQuery(ejbql);
-        List objects11 = context.performQuery(queryEJBQL);
-        assertEquals(1, objects11.size());
-    }
-
-    public void testQuotedEJBQLQueryWithJoin() throws Exception {
-        String ejbql = "select p from Quote_Person p join p.address_Rel a where p.name = 'Arcadi'";
-        EJBQLQuery queryEJBQL = new EJBQLQuery(ejbql);
-        List resultList = context.performQuery(queryEJBQL);
-        assertEquals(1, resultList.size());
-    }
-
-    public void testQuotedEJBQLQueryWithOrderBy() throws Exception {
-        EJBQLQuery query = new EJBQLQuery("select p from Quote_Person p order by p.name");
-
-        List<Quote_Person> resultList = (List<Quote_Person>) context.performQuery(query);
-
-        assertEquals(2, resultList.size());
-        assertEquals("Arcadi", resultList.get(0).getName());
-        assertEquals("Name", resultList.get(1).getName());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
new file mode 100644
index 0000000..920096d
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
@@ -0,0 +1,858 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.access;
+
+import org.apache.cayenne.DataRow;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.query.NamedQuery;
+import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.testdo.testmap.DateTestEntity;
+import org.apache.cayenne.testdo.testmap.ReturnTypesMap1;
+import org.apache.cayenne.testdo.testmap.ReturnTypesMap2;
+import org.apache.cayenne.testdo.testmap.ReturnTypesMapLobs1;
+import org.apache.cayenne.unit.UnitDbAdapter;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+import java.math.BigDecimal;
+import java.sql.Time;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * Test Types mapping for selected columns
+ */
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class ReturnTypesMappingIT extends ServerCase {
+
+    @Inject
+    private DataContext context;
+    
+    @Inject
+    private DBHelper dbHelper;
+    
+    @Inject
+    private UnitDbAdapter unitDbAdapter;
+    
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            dbHelper.deleteAll("TYPES_MAPPING_LOBS_TEST1");
+            dbHelper.deleteAll("TYPES_MAPPING_TEST2");
+        }
+        dbHelper.deleteAll("TYPES_MAPPING_TEST1");
+        dbHelper.deleteAll("DATE_TEST");
+    }
+
+    /*
+     * TODO: olga: We need divided TYPES_MAPPING_TES2 to 2 schemas with lobs columns and not lobs columns 
+     */
+    
+    public void testBIGINT() throws Exception {
+        String columnName = "BIGINT_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Long bigintValue = 5326457654783454355l;
+        test.setBigintColumn(bigintValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(Long.class, columnValue.getClass());
+        assertEquals(bigintValue, columnValue);
+    }
+
+    public void testBIGINT2() throws Exception {
+       ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+    
+        Long bigintValue = 5326457654783454355l;
+        test.setBigintColumn(bigintValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Long columnValue = testRead.getBigintColumn();
+        assertNotNull(columnValue);
+        assertEquals(Long.class, columnValue.getClass());
+        assertEquals(bigintValue, columnValue);
+    }
+
+    public void testBINARY() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            String columnName = "BINARY_COLUMN";
+            ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+    
+            byte[] binaryValue = {
+                    3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+            };
+            test.setBinaryColumn(binaryValue);
+            context.commitChanges();
+    
+            NamedQuery q = new NamedQuery("SelectReturnTypesMap2");
+            DataRow testRead = (DataRow) context.performQuery(q).get(0);
+            Object columnValue = testRead.get(columnName);
+            assertNotNull(columnValue);
+            assertEquals(byte[].class, columnValue.getClass());
+            assertTrue(Arrays.equals(binaryValue, (byte[]) columnValue));
+        }
+    }
+
+    public void testBINARY2() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+    
+            byte[] binaryValue = {
+                    3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+            };
+            test.setBinaryColumn(binaryValue);
+            context.commitChanges();
+    
+            SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
+            ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
+            byte[] columnValue = testRead.getBinaryColumn();
+            assertNotNull(columnValue);
+            assertEquals(byte[].class, columnValue.getClass());
+            assertTrue(Arrays.equals(binaryValue, columnValue));
+        }
+    }
+
+    public void testBIT() throws Exception {
+        String columnName = "BIT_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Boolean bitValue = true;
+        test.setBitColumn(bitValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertTrue(Boolean.class.equals(columnValue.getClass())
+                || Short.class.equals(columnValue.getClass()));
+        assertTrue(bitValue.equals(columnValue) || ((Number) columnValue).intValue() == 1);
+    }
+
+    public void testBIT2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Boolean bitValue = true;
+        test.setBitColumn(bitValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Boolean columnValue = testRead.getBitColumn();
+        assertNotNull(columnValue);
+        assertEquals(Boolean.class, columnValue.getClass());
+        assertEquals(bitValue, columnValue);
+    }
+
+    public void testBLOB() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            String columnName = "BLOB_COLUMN";
+            ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+    
+            byte[] blobValue = {
+                    3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+            };
+            test.setBlobColumn(blobValue);
+            context.commitChanges();
+    
+            NamedQuery q = new NamedQuery("SelectReturnTypesMap2");
+            DataRow testRead = (DataRow) context.performQuery(q).get(0);
+            Object columnValue = testRead.get(columnName);
+            assertNotNull(columnValue);
+            assertEquals(byte[].class, columnValue.getClass());
+            assertTrue(Arrays.equals(blobValue, (byte[]) columnValue));
+        }
+    }
+
+    public void testBLOB2() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+    
+            byte[] blobValue = {
+                    3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+            };
+            test.setBlobColumn(blobValue);
+            context.commitChanges();
+    
+            SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
+            ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
+            byte[] columnValue = testRead.getBlobColumn();
+            assertNotNull(columnValue);
+            assertEquals(byte[].class, columnValue.getClass());
+            assertTrue(Arrays.equals(blobValue, columnValue));
+        }
+    }
+
+    public void testBOOLEAN() throws Exception {
+        String columnName = "BOOLEAN_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Boolean booleanValue = true;
+        test.setBooleanColumn(booleanValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertTrue(Boolean.class.equals(columnValue.getClass())
+                || Short.class.equals(columnValue.getClass()));
+        assertTrue(booleanValue.equals(columnValue)
+                || ((Number) columnValue).intValue() == 1);
+    }
+
+    public void testBOOLEAN2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Boolean booleanValue = true;
+        test.setBooleanColumn(booleanValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Boolean columnValue = testRead.getBooleanColumn();
+        assertNotNull(columnValue);
+        assertEquals(Boolean.class, columnValue.getClass());
+        assertEquals(booleanValue, columnValue);
+    }
+
+    public void testCHAR() throws Exception {
+        String columnName = "CHAR_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        String charValue = "Char string for tests!";
+        test.setCharColumn(charValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(String.class, columnValue.getClass());
+        assertEquals(charValue, columnValue);
+    }
+
+    public void testCHAR2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        String charValue = "Char string for tests!";
+        test.setCharColumn(charValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        String columnValue = testRead.getCharColumn();
+        assertNotNull(columnValue);
+        assertEquals(String.class, columnValue.getClass());
+        assertEquals(charValue, columnValue);
+    }
+
+    public void testCLOB() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            String columnName = "CLOB_COLUMN";
+            ReturnTypesMapLobs1 test = context.newObject(ReturnTypesMapLobs1.class);
+    
+            StringBuffer buffer = new StringBuffer();
+            for (int i = 0; i < 10000; i++) {
+                buffer.append("CLOB very large string for tests!!!!\n");
+            }
+            String clobValue = buffer.toString();
+            test.setClobColumn(clobValue);
+            context.commitChanges();
+    
+            NamedQuery q = new NamedQuery("SelectReturnTypesLobsMap1");
+            DataRow testRead = (DataRow) context.performQuery(q).get(0);
+            Object columnValue = testRead.get(columnName);
+            if (columnValue == null && testRead.containsKey(columnName.toLowerCase())) {
+                columnValue = testRead.get(columnName.toLowerCase());
+            }
+            assertNotNull(columnValue);
+            assertEquals(String.class, columnValue.getClass());
+            assertEquals(clobValue, columnValue);
+        }
+    }
+
+    public void testCLOB2() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            ReturnTypesMapLobs1 test = context.newObject(ReturnTypesMapLobs1.class);
+    
+            StringBuffer buffer = new StringBuffer();
+            for (int i = 0; i < 10000; i++) {
+                buffer.append("CLOB very large string for tests!!!!\n");
+            }
+            String clobValue = buffer.toString();
+            test.setClobColumn(clobValue);
+            context.commitChanges();
+    
+            SelectQuery q = new SelectQuery(ReturnTypesMapLobs1.class);
+            ReturnTypesMapLobs1 testRead = (ReturnTypesMapLobs1) context.performQuery(q).get(0);
+            String columnValue = testRead.getClobColumn();
+            assertNotNull(columnValue);
+            assertEquals(String.class, columnValue.getClass());
+            assertEquals(clobValue, columnValue);
+        }
+    }
+
+    public void testDATE() throws Exception {
+        String columnName = "DATE_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2002, 1, 1);
+        Date dateValue = cal.getTime();
+        test.setDateColumn(dateValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(Date.class, columnValue.getClass());
+        assertEquals(dateValue.toString(), columnValue.toString());
+    }
+
+    public void testDATE2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2002, 1, 1);
+        Date dateValue = cal.getTime();
+        test.setDateColumn(dateValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Date columnValue = testRead.getDateColumn();
+        assertNotNull(columnValue);
+        assertEquals(Date.class, columnValue.getClass());
+        assertEquals(dateValue.toString(), columnValue.toString());
+    }
+
+    public void testDECIMAL() throws Exception {
+        String columnName = "DECIMAL_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        BigDecimal decimalValue = new BigDecimal("578438.57843");
+        test.setDecimalColumn(decimalValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(BigDecimal.class, columnValue.getClass());
+        assertEquals(decimalValue, columnValue);
+    }
+
+    public void testDECIMAL2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        BigDecimal decimalValue = new BigDecimal("578438.57843");
+        test.setDecimalColumn(decimalValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        BigDecimal columnValue = testRead.getDecimalColumn();
+        assertNotNull(columnValue);
+        assertEquals(BigDecimal.class, columnValue.getClass());
+        assertEquals(decimalValue, columnValue);
+    }
+
+    public void testDOUBLE() throws Exception {
+        String columnName = "DOUBLE_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Double doubleValue = 3298.4349783d;
+        test.setDoubleColumn(doubleValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(Double.class, columnValue.getClass());
+        assertEquals(doubleValue, columnValue);
+    }
+
+    public void testDOUBLE2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Double doubleValue = 3298.4349783d;
+        test.setDoubleColumn(doubleValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Double columnValue = testRead.getDoubleColumn();
+        assertNotNull(columnValue);
+        assertEquals(Double.class, columnValue.getClass());
+        assertEquals(doubleValue, columnValue);
+    }
+
+    public void testFLOAT() throws Exception {
+        String columnName = "FLOAT_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Float floatValue = 375.437f;
+        test.setFloatColumn(floatValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertTrue(Float.class.equals(columnValue.getClass())
+                || Double.class.equals(columnValue.getClass()));
+        assertEquals(floatValue.floatValue(), ((Number)columnValue).floatValue());
+    }
+
+    public void testFLOAT2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Float floatValue = 375.437f;
+        test.setFloatColumn(floatValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Float columnValue = testRead.getFloatColumn();
+        assertNotNull(columnValue);
+        assertEquals(Float.class, columnValue.getClass());
+        assertEquals(floatValue, columnValue);
+    }
+
+    public void testINTEGER() throws Exception {
+        String columnName = "INTEGER_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Integer integerValue = 54235;
+        test.setIntegerColumn(integerValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(Integer.class, columnValue.getClass());
+        assertEquals(integerValue, columnValue);
+    }
+
+    public void testINTEGER2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Integer integerValue = 54235;
+        test.setIntegerColumn(integerValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Integer columnValue = testRead.getIntegerColumn();
+        assertNotNull(columnValue);
+        assertEquals(Integer.class, columnValue.getClass());
+        assertEquals(integerValue, columnValue);
+    }
+
+    public void testLONGVARBINARY() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            String columnName = "LONGVARBINARY_COLUMN";
+            ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+    
+            byte[] longvarbinaryValue = {
+                    3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+            };
+            test.setLongvarbinaryColumn(longvarbinaryValue);
+            context.commitChanges();
+    
+            NamedQuery q = new NamedQuery("SelectReturnTypesMap2");
+            DataRow testRead = (DataRow) context.performQuery(q).get(0);
+            Object columnValue = testRead.get(columnName);
+            assertNotNull(columnValue);
+            assertEquals(byte[].class, columnValue.getClass());
+            assertTrue(Arrays.equals(longvarbinaryValue, (byte[]) columnValue));
+        }
+    }
+
+    public void testLONGVARBINARY2() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+    
+            byte[] longvarbinaryValue = {
+                    3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+            };
+            test.setLongvarbinaryColumn(longvarbinaryValue);
+            context.commitChanges();
+    
+            SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
+            ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
+            byte[] columnValue = testRead.getLongvarbinaryColumn();
+            assertNotNull(columnValue);
+            assertEquals(byte[].class, columnValue.getClass());
+            assertTrue(Arrays.equals(longvarbinaryValue, columnValue));
+        }
+    }
+
+    public void testLONGVARCHAR() throws Exception {
+        String columnName = "LONGVARCHAR_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        StringBuffer buffer = new StringBuffer();
+        for (int i = 0; i < 500; i++) {
+            buffer.append("LONGVARCHAR large string for tests!!!!\n");
+        }
+        String longvarcharValue = buffer.toString();
+        test.setLongvarcharColumn(longvarcharValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(String.class, columnValue.getClass());
+        assertEquals(longvarcharValue, columnValue);
+    }
+
+    public void testLONGVARCHAR2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        StringBuffer buffer = new StringBuffer();
+        for (int i = 0; i < 500; i++) {
+            buffer.append("LONGVARCHAR large string for tests!!!!\n");
+        }
+        String longvarcharValue = buffer.toString();
+        test.setLongvarcharColumn(longvarcharValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        String columnValue = testRead.getLongvarcharColumn();
+        assertNotNull(columnValue);
+        assertEquals(String.class, columnValue.getClass());
+        assertEquals(longvarcharValue, columnValue);
+    }
+
+    public void testNUMERIC() throws Exception {
+        String columnName = "NUMERIC_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        BigDecimal numericValue = new BigDecimal("578438.57843");
+        test.setNumericColumn(numericValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(BigDecimal.class, columnValue.getClass());
+        assertEquals(numericValue, columnValue);
+    }
+
+    public void testNUMERIC2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        BigDecimal numericValue = new BigDecimal("578438.57843");
+        test.setNumericColumn(numericValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        BigDecimal columnValue = testRead.getNumericColumn();
+        assertNotNull(columnValue);
+        assertEquals(BigDecimal.class, columnValue.getClass());
+        assertEquals(numericValue, columnValue);
+    }
+
+    public void testREAL() throws Exception {
+        String columnName = "REAL_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Float realValue = 5788.57843f;
+        test.setRealColumn(realValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+
+        // MySQL can treat REAL as either DOUBLE or FLOAT depending on the
+        // engine settings
+        if (unitDbAdapter.realAsDouble()) {
+            assertEquals(Double.class, columnValue.getClass());
+            assertEquals(Double.valueOf(realValue), (Double) columnValue, 0.0001);
+        } else {
+            assertEquals(Float.class, columnValue.getClass());
+            assertEquals(realValue, columnValue);
+        }
+    }
+
+    public void testREAL2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Float realValue = 5788.57843f;
+        test.setRealColumn(realValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Float columnValue = testRead.getRealColumn();
+        assertNotNull(columnValue);
+        assertEquals(Float.class, columnValue.getClass());
+        assertEquals(realValue, columnValue);
+    }
+
+    public void testSMALLINT() throws Exception {
+        String columnName = "SMALLINT_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Short smallintValue = 32564;
+        test.setSmallintColumn(smallintValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(Short.class, columnValue.getClass());
+        assertEquals(smallintValue, columnValue);
+    }
+
+    public void testSMALLINT2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Short smallintValue = 32564;
+        test.setSmallintColumn(smallintValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Short columnValue = testRead.getSmallintColumn();
+        assertNotNull(columnValue);
+        assertEquals(Short.class, columnValue.getClass());
+        assertEquals(smallintValue, columnValue);
+    }
+
+    public void testTIME() throws Exception {
+        String columnName = "TIME_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2003, 1, 1, 1, 20, 30);
+        Date timeValue = new Time(cal.getTime().getTime());
+        test.setTimeColumn(timeValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(Date.class, columnValue.getClass());
+        assertEquals(timeValue.toString(), new Time(((Date) columnValue).getTime())
+                .toString());
+    }
+
+    public void testTIME2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2003, 1, 1, 1, 20, 30);
+        Date timeValue = new Time(cal.getTime().getTime());
+        test.setTimeColumn(timeValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Date columnValue = testRead.getTimeColumn();
+        assertNotNull(columnValue);
+        assertEquals(Date.class, columnValue.getClass());
+        assertEquals(timeValue.toString(), new Time(columnValue.getTime()).toString());
+    }
+
+    public void testSQLTemplateTime() throws Exception {
+        DateTestEntity test = (DateTestEntity) context.newObject("DateTestEntity");
+
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2003, 1, 1, 1, 20, 30);
+
+        // most databases fail millisecond accuracy
+        // cal.set(Calendar.MILLISECOND, 55);
+
+        Time now = new Time(cal.getTime().getTime());
+        test.setTimeColumn(now);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectDateTest");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Date columnValue = (Date) testRead.get("TIME_COLUMN");
+        assertNotNull(testRead.toString(), columnValue);
+        assertEquals(now.toString(), new Time(columnValue.getTime()).toString());
+    }
+
+    public void testTIMESTAMP() throws Exception {
+        String columnName = "TIMESTAMP_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Date timestampValue = Calendar.getInstance().getTime();
+        test.setTimestampColumn(timestampValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(Date.class, columnValue.getClass());
+        
+        // some DB's, noteably MySQL, strip the milliseconds from timestamps,
+        // so comparing within 1 second precision
+        long delta = timestampValue.getTime() - ((Date) columnValue).getTime();
+        assertTrue(delta < 1000);
+    }
+
+    public void testTIMESTAMP2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Date timestampValue = Calendar.getInstance().getTime();
+        test.setTimestampColumn(timestampValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Date columnValue = testRead.getTimestampColumn();
+        assertNotNull(columnValue);
+        assertEquals(Date.class, columnValue.getClass());
+        
+        // some DB's, noteably MySQL, strip the milliseconds from timestamps,
+        // so comparing within 1 second precision
+        long delta = timestampValue.getTime() - ((Date) columnValue).getTime();
+        assertTrue(delta < 1000);    }
+
+    public void testTINYINT() throws Exception {
+        String columnName = "TINYINT_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Byte tinyintValue = 89;
+        test.setTinyintColumn(tinyintValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertTrue(Short.class.equals(columnValue.getClass()));
+        assertEquals(tinyintValue.intValue(), ((Number)columnValue).intValue());
+    }
+
+    public void testTINYINT2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        Byte tinyintValue = 89;
+        test.setTinyintColumn(tinyintValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        Byte columnValue = testRead.getTinyintColumn();
+        assertNotNull(columnValue);
+        assertEquals(Byte.class, columnValue.getClass());
+        assertEquals(tinyintValue, columnValue);
+    }
+
+    public void testVARBINARY() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            String columnName = "VARBINARY_COLUMN";
+            ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+    
+            byte[] varbinaryValue = {
+                    3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+            };
+            test.setVarbinaryColumn(varbinaryValue);
+            context.commitChanges();
+    
+            NamedQuery q = new NamedQuery("SelectReturnTypesMap2");
+            DataRow testRead = (DataRow) context.performQuery(q).get(0);
+            Object columnValue = testRead.get(columnName);
+            assertNotNull(columnValue);
+            assertEquals(byte[].class, columnValue.getClass());
+            assertTrue(Arrays.equals(varbinaryValue, (byte[]) columnValue));
+        }
+    }
+
+    public void testVARBINARY2() throws Exception {
+        if (unitDbAdapter.supportsLobs()) {
+            ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+    
+            byte[] varbinaryValue = {
+                    3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+            };
+            test.setVarbinaryColumn(varbinaryValue);
+            context.commitChanges();
+    
+            SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
+            ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
+            byte[] columnValue = testRead.getVarbinaryColumn();
+            assertNotNull(columnValue);
+            assertEquals(byte[].class, columnValue.getClass());
+            assertTrue(Arrays.equals(varbinaryValue, columnValue));
+        }
+    }
+
+    public void testVARCHAR() throws Exception {
+        String columnName = "VARCHAR_COLUMN";
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        String varcharValue = "VARChar string for tests!";
+        test.setVarcharColumn(varcharValue);
+        context.commitChanges();
+
+        NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+        DataRow testRead = (DataRow) context.performQuery(q).get(0);
+        Object columnValue = testRead.get(columnName);
+        assertNotNull(columnValue);
+        assertEquals(String.class, columnValue.getClass());
+        assertEquals(varcharValue, columnValue);
+    }
+
+    public void testVARCHAR2() throws Exception {
+        ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+        String varcharValue = "VARChar string for tests!";
+        test.setVarcharColumn(varcharValue);
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+        ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+        String columnValue = testRead.getVarcharColumn();
+        assertNotNull(columnValue);
+        assertEquals(String.class, columnValue.getClass());
+        assertEquals(varcharValue, columnValue);
+    }
+}