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/14 18:47:45 UTC

[44/50] [abbrv] cayenne git commit: Refactor TestMap Project

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
index 87782a7..02e1a8b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
@@ -25,14 +25,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.exp.parser.ASTBitwiseAnd;
-import org.apache.cayenne.exp.parser.ASTBitwiseNot;
-import org.apache.cayenne.exp.parser.ASTBitwiseOr;
-import org.apache.cayenne.exp.parser.ASTBitwiseXor;
-import org.apache.cayenne.exp.parser.ASTEqual;
-import org.apache.cayenne.exp.parser.ASTGreater;
-import org.apache.cayenne.exp.parser.ASTObjPath;
-import org.apache.cayenne.exp.parser.ASTScalar;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.map.ObjEntity;
@@ -41,11 +33,9 @@ import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.ArtistExhibit;
-import org.apache.cayenne.testdo.testmap.ClobTestEntity;
 import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.testdo.testmap.ReturnTypesMap1;
 import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -81,22 +71,6 @@ public class SelectQueryIT extends ServerCase {
         dbHelper.deleteAll("ARTIST_EXHIBIT");
         dbHelper.deleteAll("ARTIST_GROUP");
         dbHelper.deleteAll("ARTIST");
-        dbHelper.deleteAll("CLOB_TEST_RELATION");
-        dbHelper.deleteAll("TYPES_MAPPING_TEST1");
-
-        if (accessStackAdapter.supportsLobs()) {
-            dbHelper.deleteAll("CLOB_TEST");
-        }
-    }
-
-    protected void createClobDataSet() throws Exception {
-        TableHelper tClobTest = new TableHelper(dbHelper, "CLOB_TEST");
-        tClobTest.setColumns("CLOB_TEST_ID", "CLOB_COL");
-
-        tClobTest.deleteAll();
-
-        tClobTest.insert(1, "clob1");
-        tClobTest.insert(2, "clob2");
     }
 
     protected void createArtistsDataSet() throws Exception {
@@ -118,17 +92,6 @@ public class SelectQueryIT extends ServerCase {
         tArtist.insert(2, "Y_");
     }
 
-    protected void createNumericsDataSet() throws Exception {
-        TableHelper tNumerics = new TableHelper(dbHelper, "TYPES_MAPPING_TEST1");
-        tNumerics.setColumns("AAAID", "INTEGER_COLUMN");
-
-        tNumerics.insert(1, 0);
-        tNumerics.insert(2, 1);
-        tNumerics.insert(3, 2);
-        tNumerics.insert(4, 3);
-        tNumerics.insert(5, 4);
-    }
-
     @Test
     public void testSetQualifier() {
         SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
@@ -375,62 +338,6 @@ public class SelectQueryIT extends ServerCase {
         assertEquals(20, objects.size());
     }
 
-    /** Test how "like ignore case" works when using uppercase parameter. */
-    @Test
-    public void testSelectLikeIgnoreCaseClob() throws Exception {
-        if (accessStackAdapter.supportsLobs()) {
-            createClobDataSet();
-            SelectQuery<ClobTestEntity> query = new SelectQuery<ClobTestEntity>(ClobTestEntity.class);
-            Expression qual = ExpressionFactory.likeIgnoreCaseExp("clobCol", "clob%");
-            query.setQualifier(qual);
-            List<?> objects = context.performQuery(query);
-            assertEquals(2, objects.size());
-        }
-    }
-
-    @Test
-    public void testSelectFetchLimit_Offset_DistinctClob() throws Exception {
-        if (accessStackAdapter.supportsLobs()) {
-            createClobDataSet();
-
-            // see CAY-1539... CLOB column causes suppression of DISTINCT in
-            // SQL, and hence the offset processing is done in memory
-            SelectQuery<ClobTestEntity> query = new SelectQuery<ClobTestEntity>(ClobTestEntity.class);
-            query.addOrdering("db:" + ClobTestEntity.CLOB_TEST_ID_PK_COLUMN, SortOrder.ASCENDING);
-            query.setFetchLimit(1);
-            query.setFetchOffset(1);
-            query.setDistinct(true);
-
-            List<ClobTestEntity> objects = context.performQuery(query);
-            assertEquals(1, objects.size());
-            assertEquals(2, Cayenne.intPKForObject(objects.get(0)));
-        }
-    }
-
-    @Test
-    public void testSelectEqualsClob() throws Exception {
-        if (accessStackAdapter.supportsLobComparisons()) {
-            createClobDataSet();
-            SelectQuery<ClobTestEntity> query = new SelectQuery<ClobTestEntity>(ClobTestEntity.class);
-            Expression qual = ExpressionFactory.matchExp("clobCol", "clob1");
-            query.setQualifier(qual);
-            List<?> objects = context.performQuery(query);
-            assertEquals(1, objects.size());
-        }
-    }
-
-    @Test
-    public void testSelectNotEqualsClob() throws Exception {
-        if (accessStackAdapter.supportsLobComparisons()) {
-            createClobDataSet();
-            SelectQuery query = new SelectQuery(ClobTestEntity.class);
-            Expression qual = ExpressionFactory.noMatchExp("clobCol", "clob1");
-            query.setQualifier(qual);
-            List<?> objects = context.performQuery(query);
-            assertEquals(1, objects.size());
-        }
-    }
-
     @Test
     public void testSelectIn() throws Exception {
         createArtistsDataSet();
@@ -506,102 +413,6 @@ public class SelectQueryIT extends ServerCase {
     }
 
     @Test
-    public void testSelectBitwiseNot() throws Exception {
-
-        if (!accessStackAdapter.supportsBitwiseOps()) {
-            return;
-        }
-
-        createNumericsDataSet();
-
-        // to simplify result checking, do double NOT
-        Expression left = new ASTBitwiseNot(new ASTBitwiseNot(new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY)));
-        Expression right = new ASTScalar(2);
-        Expression greater = new ASTGreater();
-        greater.setOperand(0, left);
-        greater.setOperand(1, right);
-
-        SelectQuery query = new SelectQuery(ReturnTypesMap1.class);
-        query.setQualifier(greater);
-
-        List<ReturnTypesMap1> objects = context.performQuery(query);
-        assertEquals(2, objects.size());
-    }
-
-    @Test
-    public void testSelectBitwiseOr() throws Exception {
-
-        if (!accessStackAdapter.supportsBitwiseOps()) {
-            return;
-        }
-
-        createNumericsDataSet();
-
-        // to simplify result checking, do double NOT
-        Expression left = new ASTBitwiseOr(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY),
-                new ASTScalar(1) });
-        Expression right = new ASTScalar(1);
-        Expression equal = new ASTEqual();
-        equal.setOperand(0, left);
-        equal.setOperand(1, right);
-
-        SelectQuery query = new SelectQuery(ReturnTypesMap1.class);
-        query.setQualifier(equal);
-
-        List<ReturnTypesMap1> objects = context.performQuery(query);
-        assertEquals(2, objects.size());
-    }
-
-    @Test
-    public void testSelectBitwiseAnd() throws Exception {
-
-        if (!accessStackAdapter.supportsBitwiseOps()) {
-            return;
-        }
-
-        createNumericsDataSet();
-
-        // to simplify result checking, do double NOT
-        Expression left = new ASTBitwiseAnd(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY),
-                new ASTScalar(1) });
-        Expression right = new ASTScalar(0);
-        Expression equal = new ASTEqual();
-        equal.setOperand(0, left);
-        equal.setOperand(1, right);
-
-        SelectQuery query = new SelectQuery(ReturnTypesMap1.class);
-        query.setQualifier(equal);
-
-        List<ReturnTypesMap1> objects = context.performQuery(query);
-        assertEquals(3, objects.size());
-    }
-
-    @Test
-    public void testSelectBitwiseXor() throws Exception {
-
-        if (!accessStackAdapter.supportsBitwiseOps()) {
-            return;
-        }
-
-        createNumericsDataSet();
-
-        // to simplify result checking, do double NOT
-        Expression left = new ASTBitwiseXor(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY),
-                new ASTScalar(1) });
-        Expression right = new ASTScalar(5);
-        Expression equal = new ASTEqual();
-        equal.setOperand(0, left);
-        equal.setOperand(1, right);
-
-        SelectQuery query = new SelectQuery(ReturnTypesMap1.class);
-        query.setQualifier(equal);
-
-        List<ReturnTypesMap1> objects = context.performQuery(query);
-        assertEquals(1, objects.size());
-        assertEquals(4, objects.get(0).getIntegerColumn().intValue());
-    }
-
-    @Test
     public void testSelectBooleanNotTrueOr() throws Exception {
         createArtistsDataSet();
         SelectQuery query = new SelectQuery(Artist.class);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
new file mode 100644
index 0000000..da3d2b4
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
@@ -0,0 +1,149 @@
+package org.apache.cayenne.query;
+
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.parser.ASTBitwiseAnd;
+import org.apache.cayenne.exp.parser.ASTBitwiseNot;
+import org.apache.cayenne.exp.parser.ASTBitwiseOr;
+import org.apache.cayenne.exp.parser.ASTBitwiseXor;
+import org.apache.cayenne.exp.parser.ASTEqual;
+import org.apache.cayenne.exp.parser.ASTGreater;
+import org.apache.cayenne.exp.parser.ASTObjPath;
+import org.apache.cayenne.exp.parser.ASTScalar;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.testdo.return_types.ReturnTypesMap1;
+import org.apache.cayenne.unit.UnitDbAdapter;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+@UseServerRuntime(ServerCase.RETURN_TYPES_PROJECT)
+public class SelectQueryReturnTypesIT extends ServerCase {
+
+    @Inject
+    private ObjectContext context;
+
+    @Inject
+    private DBHelper dbHelper;
+
+    @Inject
+    private UnitDbAdapter accessStackAdapter;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("TYPES_MAPPING_TEST1");
+    }
+
+    protected void createNumericsDataSet() throws Exception {
+        TableHelper tNumerics = new TableHelper(dbHelper, "TYPES_MAPPING_TEST1");
+        tNumerics.setColumns("AAAID", "INTEGER_COLUMN");
+
+        tNumerics.insert(1, 0);
+        tNumerics.insert(2, 1);
+        tNumerics.insert(3, 2);
+        tNumerics.insert(4, 3);
+        tNumerics.insert(5, 4);
+    }
+
+    @Test
+    public void testSelectBitwiseNot() throws Exception {
+
+        if (!accessStackAdapter.supportsBitwiseOps()) {
+            return;
+        }
+
+        createNumericsDataSet();
+
+        // to simplify result checking, do double NOT
+        Expression left = new ASTBitwiseNot(new ASTBitwiseNot(new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY)));
+        Expression right = new ASTScalar(2);
+        Expression greater = new ASTGreater();
+        greater.setOperand(0, left);
+        greater.setOperand(1, right);
+
+        SelectQuery query = new SelectQuery(ReturnTypesMap1.class);
+        query.setQualifier(greater);
+
+        List<ReturnTypesMap1> objects = context.performQuery(query);
+        assertEquals(2, objects.size());
+    }
+
+    @Test
+    public void testSelectBitwiseOr() throws Exception {
+
+        if (!accessStackAdapter.supportsBitwiseOps()) {
+            return;
+        }
+
+        createNumericsDataSet();
+
+        // to simplify result checking, do double NOT
+        Expression left = new ASTBitwiseOr(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY),
+                new ASTScalar(1) });
+        Expression right = new ASTScalar(1);
+        Expression equal = new ASTEqual();
+        equal.setOperand(0, left);
+        equal.setOperand(1, right);
+
+        SelectQuery query = new SelectQuery(ReturnTypesMap1.class);
+        query.setQualifier(equal);
+
+        List<ReturnTypesMap1> objects = context.performQuery(query);
+        assertEquals(2, objects.size());
+    }
+
+    @Test
+    public void testSelectBitwiseAnd() throws Exception {
+
+        if (!accessStackAdapter.supportsBitwiseOps()) {
+            return;
+        }
+
+        createNumericsDataSet();
+
+        // to simplify result checking, do double NOT
+        Expression left = new ASTBitwiseAnd(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY),
+                new ASTScalar(1) });
+        Expression right = new ASTScalar(0);
+        Expression equal = new ASTEqual();
+        equal.setOperand(0, left);
+        equal.setOperand(1, right);
+
+        SelectQuery query = new SelectQuery(ReturnTypesMap1.class);
+        query.setQualifier(equal);
+
+        List<ReturnTypesMap1> objects = context.performQuery(query);
+        assertEquals(3, objects.size());
+    }
+
+    @Test
+    public void testSelectBitwiseXor() throws Exception {
+
+        if (!accessStackAdapter.supportsBitwiseOps()) {
+            return;
+        }
+
+        createNumericsDataSet();
+
+        // to simplify result checking, do double NOT
+        Expression left = new ASTBitwiseXor(new Object[] { new ASTObjPath(ReturnTypesMap1.INTEGER_COLUMN_PROPERTY),
+                new ASTScalar(1) });
+        Expression right = new ASTScalar(5);
+        Expression equal = new ASTEqual();
+        equal.setOperand(0, left);
+        equal.setOperand(1, right);
+
+        SelectQuery query = new SelectQuery(ReturnTypesMap1.class);
+        query.setQualifier(equal);
+
+        List<ReturnTypesMap1> objects = context.performQuery(query);
+        assertEquals(1, objects.size());
+        assertEquals(4, objects.get(0).getIntegerColumn().intValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java b/cayenne-server/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
index 590c170..31a53f0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
@@ -25,8 +25,8 @@ import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.testdo.testmap.MixedPersistenceStrategy;
-import org.apache.cayenne.testdo.testmap.MixedPersistenceStrategy2;
+import org.apache.cayenne.testdo.mixed_persistence_strategy.MixedPersistenceStrategy;
+import org.apache.cayenne.testdo.mixed_persistence_strategy.MixedPersistenceStrategy2;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.junit.Test;
@@ -37,7 +37,7 @@ import static org.junit.Assert.assertTrue;
 /**
  * Tests conflicts between field and map-based persistence.
  */
-@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+@UseServerRuntime(ServerCase.MIXED_PERSISTENCE_STRATEGY_PROJECT)
 public class MixedPersistenceStrategyIT extends ServerCase {
 
     @Inject

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/BinaryPKTest1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/BinaryPKTest1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/BinaryPKTest1.java
new file mode 100644
index 0000000..8722f87
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/BinaryPKTest1.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.binary_pk;
+
+import org.apache.cayenne.testdo.binary_pk.auto._BinaryPKTest1;
+
+public class BinaryPKTest1 extends _BinaryPKTest1 {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/BinaryPKTest2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/BinaryPKTest2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/BinaryPKTest2.java
new file mode 100644
index 0000000..de0a1e1
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/BinaryPKTest2.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.binary_pk;
+
+import org.apache.cayenne.testdo.binary_pk.auto._BinaryPKTest2;
+
+public class BinaryPKTest2 extends _BinaryPKTest2 {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest1.java
new file mode 100644
index 0000000..643892a
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest1.java
@@ -0,0 +1,48 @@
+package org.apache.cayenne.testdo.binary_pk.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.binary_pk.BinaryPKTest2;
+
+/**
+ * Class _BinaryPKTest1 was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _BinaryPKTest1 extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+    @Deprecated
+    public static final String BINARY_PKDETAILS_PROPERTY = "binaryPKDetails";
+
+    public static final String BIN_ID_PK_COLUMN = "BIN_ID";
+
+    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<List<BinaryPKTest2>> BINARY_PKDETAILS = new Property<List<BinaryPKTest2>>("binaryPKDetails");
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void addToBinaryPKDetails(BinaryPKTest2 obj) {
+        addToManyTarget("binaryPKDetails", obj, true);
+    }
+    public void removeFromBinaryPKDetails(BinaryPKTest2 obj) {
+        removeToManyTarget("binaryPKDetails", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<BinaryPKTest2> getBinaryPKDetails() {
+        return (List<BinaryPKTest2>)readProperty("binaryPKDetails");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest2.java
new file mode 100644
index 0000000..6279946
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/binary_pk/auto/_BinaryPKTest2.java
@@ -0,0 +1,43 @@
+package org.apache.cayenne.testdo.binary_pk.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.binary_pk.BinaryPKTest1;
+
+/**
+ * Class _BinaryPKTest2 was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _BinaryPKTest2 extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String DETAIL_NAME_PROPERTY = "detailName";
+    @Deprecated
+    public static final String TO_BINARY_PKMASTER_PROPERTY = "toBinaryPKMaster";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<String> DETAIL_NAME = new Property<String>("detailName");
+    public static final Property<BinaryPKTest1> TO_BINARY_PKMASTER = new Property<BinaryPKTest1>("toBinaryPKMaster");
+
+    public void setDetailName(String detailName) {
+        writeProperty("detailName", detailName);
+    }
+    public String getDetailName() {
+        return (String)readProperty("detailName");
+    }
+
+    public void setToBinaryPKMaster(BinaryPKTest1 toBinaryPKMaster) {
+        setToOneTarget("toBinaryPKMaster", toBinaryPKMaster, true);
+    }
+
+    public BinaryPKTest1 getToBinaryPKMaster() {
+        return (BinaryPKTest1)readProperty("toBinaryPKMaster");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CharFkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CharFkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CharFkTestEntity.java
new file mode 100644
index 0000000..c093da3
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CharFkTestEntity.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.compound;
+
+import org.apache.cayenne.testdo.compound.auto._CharFkTestEntity;
+
+public class CharFkTestEntity extends _CharFkTestEntity {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CharPkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CharPkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CharPkTestEntity.java
new file mode 100644
index 0000000..8e8f6c6
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CharPkTestEntity.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.compound;
+
+import org.apache.cayenne.testdo.compound.auto._CharPkTestEntity;
+
+public class CharPkTestEntity extends _CharPkTestEntity {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CompoundFkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CompoundFkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CompoundFkTestEntity.java
new file mode 100644
index 0000000..4dbd0f2
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CompoundFkTestEntity.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.compound;
+
+import org.apache.cayenne.testdo.compound.auto._CompoundFkTestEntity;
+
+public class CompoundFkTestEntity extends _CompoundFkTestEntity {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CompoundPkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CompoundPkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CompoundPkTestEntity.java
new file mode 100644
index 0000000..41c313b
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/CompoundPkTestEntity.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.compound;
+
+import org.apache.cayenne.testdo.compound.auto._CompoundPkTestEntity;
+
+public class CompoundPkTestEntity extends _CompoundPkTestEntity {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharFkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharFkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharFkTestEntity.java
new file mode 100644
index 0000000..08982d4
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharFkTestEntity.java
@@ -0,0 +1,43 @@
+package org.apache.cayenne.testdo.compound.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.compound.CharPkTestEntity;
+
+/**
+ * Class _CharFkTestEntity was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _CharFkTestEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+    @Deprecated
+    public static final String TO_CHAR_PK_PROPERTY = "toCharPK";
+
+    public static final String PK_PK_COLUMN = "PK";
+
+    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<CharPkTestEntity> TO_CHAR_PK = new Property<CharPkTestEntity>("toCharPK");
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void setToCharPK(CharPkTestEntity toCharPK) {
+        setToOneTarget("toCharPK", toCharPK, true);
+    }
+
+    public CharPkTestEntity getToCharPK() {
+        return (CharPkTestEntity)readProperty("toCharPK");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharPkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharPkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharPkTestEntity.java
new file mode 100644
index 0000000..5711aaf
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CharPkTestEntity.java
@@ -0,0 +1,58 @@
+package org.apache.cayenne.testdo.compound.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.compound.CharFkTestEntity;
+
+/**
+ * Class _CharPkTestEntity was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _CharPkTestEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String OTHER_COL_PROPERTY = "otherCol";
+    @Deprecated
+    public static final String PK_COL_PROPERTY = "pkCol";
+    @Deprecated
+    public static final String CHAR_FKS_PROPERTY = "charFKs";
+
+    public static final String PK_COL_PK_COLUMN = "PK_COL";
+
+    public static final Property<String> OTHER_COL = new Property<String>("otherCol");
+    public static final Property<String> PK_COL = new Property<String>("pkCol");
+    public static final Property<List<CharFkTestEntity>> CHAR_FKS = new Property<List<CharFkTestEntity>>("charFKs");
+
+    public void setOtherCol(String otherCol) {
+        writeProperty("otherCol", otherCol);
+    }
+    public String getOtherCol() {
+        return (String)readProperty("otherCol");
+    }
+
+    public void setPkCol(String pkCol) {
+        writeProperty("pkCol", pkCol);
+    }
+    public String getPkCol() {
+        return (String)readProperty("pkCol");
+    }
+
+    public void addToCharFKs(CharFkTestEntity obj) {
+        addToManyTarget("charFKs", obj, true);
+    }
+    public void removeFromCharFKs(CharFkTestEntity obj) {
+        removeToManyTarget("charFKs", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<CharFkTestEntity> getCharFKs() {
+        return (List<CharFkTestEntity>)readProperty("charFKs");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundFkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundFkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundFkTestEntity.java
new file mode 100644
index 0000000..5032419
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundFkTestEntity.java
@@ -0,0 +1,43 @@
+package org.apache.cayenne.testdo.compound.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
+
+/**
+ * Class _CompoundFkTestEntity was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _CompoundFkTestEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+    @Deprecated
+    public static final String TO_COMPOUND_PK_PROPERTY = "toCompoundPk";
+
+    public static final String PKEY_PK_COLUMN = "PKEY";
+
+    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<CompoundPkTestEntity> TO_COMPOUND_PK = new Property<CompoundPkTestEntity>("toCompoundPk");
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void setToCompoundPk(CompoundPkTestEntity toCompoundPk) {
+        setToOneTarget("toCompoundPk", toCompoundPk, true);
+    }
+
+    public CompoundPkTestEntity getToCompoundPk() {
+        return (CompoundPkTestEntity)readProperty("toCompoundPk");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundPkTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundPkTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundPkTestEntity.java
new file mode 100644
index 0000000..c6ca8ef
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/compound/auto/_CompoundPkTestEntity.java
@@ -0,0 +1,69 @@
+package org.apache.cayenne.testdo.compound.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.compound.CompoundFkTestEntity;
+
+/**
+ * Class _CompoundPkTestEntity was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _CompoundPkTestEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String KEY1_PROPERTY = "key1";
+    @Deprecated
+    public static final String KEY2_PROPERTY = "key2";
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+    @Deprecated
+    public static final String COMPOUND_FK_ARRAY_PROPERTY = "compoundFkArray";
+
+    public static final String KEY1_PK_COLUMN = "KEY1";
+    public static final String KEY2_PK_COLUMN = "KEY2";
+
+    public static final Property<String> KEY1 = new Property<String>("key1");
+    public static final Property<String> KEY2 = new Property<String>("key2");
+    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<List<CompoundFkTestEntity>> COMPOUND_FK_ARRAY = new Property<List<CompoundFkTestEntity>>("compoundFkArray");
+
+    public void setKey1(String key1) {
+        writeProperty("key1", key1);
+    }
+    public String getKey1() {
+        return (String)readProperty("key1");
+    }
+
+    public void setKey2(String key2) {
+        writeProperty("key2", key2);
+    }
+    public String getKey2() {
+        return (String)readProperty("key2");
+    }
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void addToCompoundFkArray(CompoundFkTestEntity obj) {
+        addToManyTarget("compoundFkArray", obj, true);
+    }
+    public void removeFromCompoundFkArray(CompoundFkTestEntity obj) {
+        removeToManyTarget("compoundFkArray", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<CompoundFkTestEntity> getCompoundFkArray() {
+        return (List<CompoundFkTestEntity>)readProperty("compoundFkArray");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/CalendarEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/CalendarEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/CalendarEntity.java
new file mode 100644
index 0000000..567347d
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/CalendarEntity.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.date_time;
+
+import org.apache.cayenne.testdo.date_time.auto._CalendarEntity;
+
+public class CalendarEntity extends _CalendarEntity {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/DateTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/DateTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/DateTestEntity.java
new file mode 100644
index 0000000..fabe47f
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/DateTestEntity.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.date_time;
+
+import org.apache.cayenne.testdo.date_time.auto._DateTestEntity;
+
+public class DateTestEntity extends _DateTestEntity {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_CalendarEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_CalendarEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_CalendarEntity.java
new file mode 100644
index 0000000..b3a8f50
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_CalendarEntity.java
@@ -0,0 +1,32 @@
+package org.apache.cayenne.testdo.date_time.auto;
+
+import java.util.Calendar;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+
+/**
+ * Class _CalendarEntity was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _CalendarEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String CALENDAR_FIELD_PROPERTY = "calendarField";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<Calendar> CALENDAR_FIELD = new Property<Calendar>("calendarField");
+
+    public void setCalendarField(Calendar calendarField) {
+        writeProperty("calendarField", calendarField);
+    }
+    public Calendar getCalendarField() {
+        return (Calendar)readProperty("calendarField");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_DateTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_DateTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_DateTestEntity.java
new file mode 100644
index 0000000..10163cc
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/date_time/auto/_DateTestEntity.java
@@ -0,0 +1,52 @@
+package org.apache.cayenne.testdo.date_time.auto;
+
+import java.util.Date;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+
+/**
+ * Class _DateTestEntity was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _DateTestEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String DATE_COLUMN_PROPERTY = "dateColumn";
+    @Deprecated
+    public static final String TIME_COLUMN_PROPERTY = "timeColumn";
+    @Deprecated
+    public static final String TIMESTAMP_COLUMN_PROPERTY = "timestampColumn";
+
+    public static final String DATE_TEST_ID_PK_COLUMN = "DATE_TEST_ID";
+
+    public static final Property<Date> DATE_COLUMN = new Property<Date>("dateColumn");
+    public static final Property<Date> TIME_COLUMN = new Property<Date>("timeColumn");
+    public static final Property<Date> TIMESTAMP_COLUMN = new Property<Date>("timestampColumn");
+
+    public void setDateColumn(Date dateColumn) {
+        writeProperty("dateColumn", dateColumn);
+    }
+    public Date getDateColumn() {
+        return (Date)readProperty("dateColumn");
+    }
+
+    public void setTimeColumn(Date timeColumn) {
+        writeProperty("timeColumn", timeColumn);
+    }
+    public Date getTimeColumn() {
+        return (Date)readProperty("timeColumn");
+    }
+
+    public void setTimestampColumn(Date timestampColumn) {
+        writeProperty("timestampColumn", timestampColumn);
+    }
+    public Date getTimestampColumn() {
+        return (Date)readProperty("timestampColumn");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/Enum1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/Enum1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/Enum1.java
new file mode 100644
index 0000000..9b83083
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/Enum1.java
@@ -0,0 +1,23 @@
+/*****************************************************************
+ *   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.testdo.enum_test;
+
+public enum Enum1 {
+    one, two, three
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/EnumEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/EnumEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/EnumEntity.java
new file mode 100644
index 0000000..c7002af
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/EnumEntity.java
@@ -0,0 +1,25 @@
+/*****************************************************************
+ *   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.testdo.enum_test;
+
+import org.apache.cayenne.testdo.enum_test.auto._EnumEntity;
+
+public class EnumEntity extends _EnumEntity {
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/auto/_EnumEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/auto/_EnumEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/auto/_EnumEntity.java
new file mode 100644
index 0000000..ed1fee6
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/enum_test/auto/_EnumEntity.java
@@ -0,0 +1,31 @@
+package org.apache.cayenne.testdo.enum_test.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.enum_test.Enum1;
+
+/**
+ * Class _EnumEntity was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _EnumEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String ENUM_ATTRIBUTE_PROPERTY = "enumAttribute";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<Enum1> ENUM_ATTRIBUTE = new Property<Enum1>("enumAttribute");
+
+    public void setEnumAttribute(Enum1 enumAttribute) {
+        writeProperty("enumAttribute", enumAttribute);
+    }
+    public Enum1 getEnumAttribute() {
+        return (Enum1)readProperty("enumAttribute");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/ExtendedTypeEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/ExtendedTypeEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/ExtendedTypeEntity.java
new file mode 100644
index 0000000..28de153
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/ExtendedTypeEntity.java
@@ -0,0 +1,25 @@
+/*****************************************************************
+ *   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.testdo.extended_type;
+
+import org.apache.cayenne.testdo.extended_type.auto._ExtendedTypeEntity;
+
+public class ExtendedTypeEntity extends _ExtendedTypeEntity {
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1.java
new file mode 100644
index 0000000..9f5da53
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1.java
@@ -0,0 +1,35 @@
+/*****************************************************************
+ *   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.testdo.extended_type;
+
+/**
+ * A test extended type.
+ */
+public class StringET1 {
+
+    protected String string;
+
+    public StringET1(String string) {
+        this.string = string;
+    }
+
+    public String getString() {
+        return string;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1ExtendedType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1ExtendedType.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1ExtendedType.java
new file mode 100644
index 0000000..69cfd39
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1ExtendedType.java
@@ -0,0 +1,62 @@
+/*****************************************************************
+ *   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.testdo.extended_type;
+
+import org.apache.cayenne.access.types.ExtendedType;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+
+public class StringET1ExtendedType implements ExtendedType {
+
+    @Override
+    public String getClassName() {
+        return StringET1.class.getName();
+    }
+
+    @Override
+    public Object materializeObject(ResultSet rs, int index, int type) throws Exception {
+        String string = rs.getString(index);
+        return string != null ? new StringET1(string) : null;
+    }
+
+    @Override
+    public Object materializeObject(CallableStatement rs, int index, int type)
+            throws Exception {
+        String string = rs.getString(index);
+        return string != null ? new StringET1(string) : null;
+    }
+
+    @Override
+    public void setJdbcObject(
+            PreparedStatement statement,
+            Object value,
+            int pos,
+            int type,
+            int precision) throws Exception {
+
+        if (value instanceof StringET1) {
+            statement.setString(pos, ((StringET1) value).getString());
+        }
+        else {
+            statement.setNull(pos, type);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/auto/_ExtendedTypeEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/auto/_ExtendedTypeEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/auto/_ExtendedTypeEntity.java
new file mode 100644
index 0000000..e71a1b5
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/auto/_ExtendedTypeEntity.java
@@ -0,0 +1,31 @@
+package org.apache.cayenne.testdo.extended_type.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.extended_type.StringET1;
+
+/**
+ * Class _ExtendedTypeEntity was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _ExtendedTypeEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<StringET1> NAME = new Property<StringET1>("name");
+
+    public void setName(StringET1 name) {
+        writeProperty("name", name);
+    }
+    public StringET1 getName() {
+        return (StringET1)readProperty("name");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnCompKey.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnCompKey.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnCompKey.java
new file mode 100644
index 0000000..2c9413d
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnCompKey.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.generated;
+
+import org.apache.cayenne.testdo.generated.auto._GeneratedColumnCompKey;
+
+public class GeneratedColumnCompKey extends _GeneratedColumnCompKey {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnCompMaster.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnCompMaster.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnCompMaster.java
new file mode 100644
index 0000000..bdf4416
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnCompMaster.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.generated;
+
+import org.apache.cayenne.testdo.generated.auto._GeneratedColumnCompMaster;
+
+public class GeneratedColumnCompMaster extends _GeneratedColumnCompMaster {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnDep.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnDep.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnDep.java
new file mode 100644
index 0000000..86360a2
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnDep.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.generated;
+
+import org.apache.cayenne.testdo.generated.auto._GeneratedColumnDep;
+
+public class GeneratedColumnDep extends _GeneratedColumnDep {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnTest2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnTest2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnTest2.java
new file mode 100644
index 0000000..0d10263
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnTest2.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.generated;
+
+import org.apache.cayenne.testdo.generated.auto._GeneratedColumnTest2;
+
+public class GeneratedColumnTest2 extends _GeneratedColumnTest2 {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnTestEntity.java
new file mode 100644
index 0000000..ea759f4
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedColumnTestEntity.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   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.testdo.generated;
+
+import org.apache.cayenne.testdo.generated.auto._GeneratedColumnTestEntity;
+
+public class GeneratedColumnTestEntity extends _GeneratedColumnTestEntity {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedF1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedF1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedF1.java
new file mode 100644
index 0000000..d24761e
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedF1.java
@@ -0,0 +1,25 @@
+/*****************************************************************
+ *   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.testdo.generated;
+
+import org.apache.cayenne.testdo.generated.auto._GeneratedF1;
+
+public class GeneratedF1 extends _GeneratedF1 {
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedF2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedF2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedF2.java
new file mode 100644
index 0000000..cb9dff5
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/GeneratedF2.java
@@ -0,0 +1,25 @@
+/*****************************************************************
+ *   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.testdo.generated;
+
+import org.apache.cayenne.testdo.generated.auto._GeneratedF2;
+
+public class GeneratedF2 extends _GeneratedF2 {
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompKey.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompKey.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompKey.java
new file mode 100644
index 0000000..78e9132
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompKey.java
@@ -0,0 +1,45 @@
+package org.apache.cayenne.testdo.generated.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.generated.GeneratedColumnCompMaster;
+
+/**
+ * Class _GeneratedColumnCompKey was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _GeneratedColumnCompKey extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+    @Deprecated
+    public static final String TO_MASTER_PROPERTY = "toMaster";
+
+    public static final String AUTO_PK_PK_COLUMN = "AUTO_PK";
+    public static final String GENERATED_COLUMN_PK_COLUMN = "GENERATED_COLUMN";
+    public static final String PROPAGATED_PK_PK_COLUMN = "PROPAGATED_PK";
+
+    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<GeneratedColumnCompMaster> TO_MASTER = new Property<GeneratedColumnCompMaster>("toMaster");
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void setToMaster(GeneratedColumnCompMaster toMaster) {
+        setToOneTarget("toMaster", toMaster, true);
+    }
+
+    public GeneratedColumnCompMaster getToMaster() {
+        return (GeneratedColumnCompMaster)readProperty("toMaster");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompMaster.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompMaster.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompMaster.java
new file mode 100644
index 0000000..16d97ed
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnCompMaster.java
@@ -0,0 +1,48 @@
+package org.apache.cayenne.testdo.generated.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.generated.GeneratedColumnCompKey;
+
+/**
+ * Class _GeneratedColumnCompMaster was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _GeneratedColumnCompMaster extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+    @Deprecated
+    public static final String TO_DETAIL_PROPERTY = "toDetail";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<List<GeneratedColumnCompKey>> TO_DETAIL = new Property<List<GeneratedColumnCompKey>>("toDetail");
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void addToToDetail(GeneratedColumnCompKey obj) {
+        addToManyTarget("toDetail", obj, true);
+    }
+    public void removeFromToDetail(GeneratedColumnCompKey obj) {
+        removeToManyTarget("toDetail", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<GeneratedColumnCompKey> getToDetail() {
+        return (List<GeneratedColumnCompKey>)readProperty("toDetail");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnDep.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnDep.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnDep.java
new file mode 100644
index 0000000..38be7ff
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnDep.java
@@ -0,0 +1,43 @@
+package org.apache.cayenne.testdo.generated.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.generated.GeneratedColumnTestEntity;
+
+/**
+ * Class _GeneratedColumnDep was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _GeneratedColumnDep extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+    @Deprecated
+    public static final String TO_MASTER_PROPERTY = "toMaster";
+
+    public static final String GENERATED_COLUMN_FK_PK_COLUMN = "GENERATED_COLUMN_FK";
+
+    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<GeneratedColumnTestEntity> TO_MASTER = new Property<GeneratedColumnTestEntity>("toMaster");
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void setToMaster(GeneratedColumnTestEntity toMaster) {
+        setToOneTarget("toMaster", toMaster, true);
+    }
+
+    public GeneratedColumnTestEntity getToMaster() {
+        return (GeneratedColumnTestEntity)readProperty("toMaster");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTest2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTest2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTest2.java
new file mode 100644
index 0000000..3628bfb
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTest2.java
@@ -0,0 +1,30 @@
+package org.apache.cayenne.testdo.generated.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+
+/**
+ * Class _GeneratedColumnTest2 was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _GeneratedColumnTest2 extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+
+    public static final String GENERATED_COLUMN_PK_COLUMN = "GENERATED_COLUMN";
+
+    public static final Property<String> NAME = new Property<String>("name");
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTestEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTestEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTestEntity.java
new file mode 100644
index 0000000..8c82030
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedColumnTestEntity.java
@@ -0,0 +1,43 @@
+package org.apache.cayenne.testdo.generated.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.generated.GeneratedColumnDep;
+
+/**
+ * Class _GeneratedColumnTestEntity was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _GeneratedColumnTestEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String NAME_PROPERTY = "name";
+    @Deprecated
+    public static final String TO_DEP_PROPERTY = "toDep";
+
+    public static final String GENERATED_COLUMN_PK_COLUMN = "GENERATED_COLUMN";
+
+    public static final Property<String> NAME = new Property<String>("name");
+    public static final Property<GeneratedColumnDep> TO_DEP = new Property<GeneratedColumnDep>("toDep");
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void setToDep(GeneratedColumnDep toDep) {
+        setToOneTarget("toDep", toDep, true);
+    }
+
+    public GeneratedColumnDep getToDep() {
+        return (GeneratedColumnDep)readProperty("toDep");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF1.java
new file mode 100644
index 0000000..d93337d
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF1.java
@@ -0,0 +1,38 @@
+package org.apache.cayenne.testdo.generated.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.generated.GeneratedF2;
+
+/**
+ * Class _GeneratedF1 was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _GeneratedF1 extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String F2_PROPERTY = "f2";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<List<GeneratedF2>> F2 = new Property<List<GeneratedF2>>("f2");
+
+    public void addToF2(GeneratedF2 obj) {
+        addToManyTarget("f2", obj, true);
+    }
+    public void removeFromF2(GeneratedF2 obj) {
+        removeToManyTarget("f2", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<GeneratedF2> getF2() {
+        return (List<GeneratedF2>)readProperty("f2");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF2.java
new file mode 100644
index 0000000..048e8a5
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/generated/auto/_GeneratedF2.java
@@ -0,0 +1,38 @@
+package org.apache.cayenne.testdo.generated.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.generated.GeneratedF1;
+
+/**
+ * Class _GeneratedF2 was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _GeneratedF2 extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String F1_PROPERTY = "f1";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<List<GeneratedF1>> F1 = new Property<List<GeneratedF1>>("f1");
+
+    public void addToF1(GeneratedF1 obj) {
+        addToManyTarget("f1", obj, true);
+    }
+    public void removeFromF1(GeneratedF1 obj) {
+        removeToManyTarget("f1", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<GeneratedF1> getF1() {
+        return (List<GeneratedF1>)readProperty("f1");
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/java/org/apache/cayenne/testdo/horizontalinherit/AbstractSuperEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/horizontalinherit/AbstractSuperEntity.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/horizontalinherit/AbstractSuperEntity.java
deleted file mode 100644
index 85ea4e0..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/horizontalinherit/AbstractSuperEntity.java
+++ /dev/null
@@ -1,25 +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.testdo.horizontalinherit;
-
-import org.apache.cayenne.testdo.horizontalinherit.auto._AbstractSuperEntity;
-
-public abstract class AbstractSuperEntity extends _AbstractSuperEntity {
-
-}