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 2012/10/11 19:01:05 UTC
svn commit: r1397163 -
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java
Author: aadamchik
Date: Thu Oct 11 17:01:04 2012
New Revision: 1397163
URL: http://svn.apache.org/viewvc?rev=1397163&view=rev
Log:
CAY-1746 Two InsertBatchQueries generated for a single DbEntity insert when this DbEntity has a flattened attribute and a flattened relationship
a test without subclass attribute ... this works
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java?rev=1397163&r1=1397162&r2=1397163&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/VerticalInheritanceTest.java Thu Oct 11 17:01:04 2012
@@ -18,6 +18,7 @@
****************************************************************/
package org.apache.cayenne.access;
+import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.List;
@@ -30,6 +31,8 @@ import org.apache.cayenne.test.jdbc.DBHe
import org.apache.cayenne.test.jdbc.TableHelper;
import org.apache.cayenne.testdo.inheritance.vertical.Iv1Root;
import org.apache.cayenne.testdo.inheritance.vertical.Iv1Sub1;
+import org.apache.cayenne.testdo.inheritance.vertical.Iv2Sub1;
+import org.apache.cayenne.testdo.inheritance.vertical.Iv2X;
import org.apache.cayenne.testdo.inheritance.vertical.IvRoot;
import org.apache.cayenne.testdo.inheritance.vertical.IvSub1;
import org.apache.cayenne.testdo.inheritance.vertical.IvSub1Sub1;
@@ -40,456 +43,486 @@ import org.apache.cayenne.unit.di.server
@UseServerRuntime(ServerCase.INHERTITANCE_VERTICAL_PROJECT)
public class VerticalInheritanceTest extends ServerCase {
- @Inject
- protected ObjectContext context;
+ @Inject
+ protected ObjectContext context;
- @Inject
- protected DBHelper dbHelper;
+ @Inject
+ protected DBHelper dbHelper;
- @Override
- protected void setUpAfterInjection() throws Exception {
+ @Override
+ protected void setUpAfterInjection() throws Exception {
- dbHelper.deleteAll("IV_SUB1_SUB1");
- dbHelper.deleteAll("IV_SUB1");
- dbHelper.deleteAll("IV_SUB2");
- dbHelper.deleteAll("IV_ROOT");
+ dbHelper.deleteAll("IV_SUB1_SUB1");
+ dbHelper.deleteAll("IV_SUB1");
+ dbHelper.deleteAll("IV_SUB2");
+ dbHelper.deleteAll("IV_ROOT");
- dbHelper.deleteAll("IV1_SUB1");
- dbHelper.deleteAll("IV1_ROOT");
- }
+ dbHelper.deleteAll("IV1_SUB1");
+ dbHelper.deleteAll("IV1_ROOT");
- public void testInsert_Root() throws Exception {
+ dbHelper.deleteAll("IV2_SUB1");
+ dbHelper.deleteAll("IV2_ROOT");
+ dbHelper.deleteAll("IV2_X");
+ }
- TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
- ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
+ public void testInsert_Root() throws Exception {
- assertEquals(0, ivRootTable.getRowCount());
+ TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+ ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
- IvRoot root = context.newObject(IvRoot.class);
- root.setName("XyZ");
- root.getObjectContext().commitChanges();
+ assertEquals(0, ivRootTable.getRowCount());
- assertEquals(1, ivRootTable.getRowCount());
+ IvRoot root = context.newObject(IvRoot.class);
+ root.setName("XyZ");
+ root.getObjectContext().commitChanges();
- Object[] rootData = ivRootTable.select();
- assertEquals(3, rootData.length);
- assertTrue(rootData[0] instanceof Number);
- assertTrue(((Number) rootData[0]).intValue() > 0);
- assertEquals("XyZ", rootData[1]);
- assertNull(rootData[2]);
- }
+ assertEquals(1, ivRootTable.getRowCount());
- public void testInsert_Sub1() throws Exception {
+ Object[] rootData = ivRootTable.select();
+ assertEquals(3, rootData.length);
+ assertTrue(rootData[0] instanceof Number);
+ assertTrue(((Number) rootData[0]).intValue() > 0);
+ assertEquals("XyZ", rootData[1]);
+ assertNull(rootData[2]);
+ }
- TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
- ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
+ public void testInsert_Sub1() throws Exception {
- TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
- ivSub1Table.setColumns("ID", "SUB1_NAME");
+ TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+ ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
- IvSub1 sub1 = context.newObject(IvSub1.class);
- sub1.setName("XyZX");
- sub1.getObjectContext().commitChanges();
+ TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+ ivSub1Table.setColumns("ID", "SUB1_NAME");
- assertEquals(1, ivRootTable.getRowCount());
- assertEquals(1, ivSub1Table.getRowCount());
+ IvSub1 sub1 = context.newObject(IvSub1.class);
+ sub1.setName("XyZX");
+ sub1.getObjectContext().commitChanges();
- Object[] data = ivRootTable.select();
- assertEquals(3, data.length);
- assertTrue(data[0] instanceof Number);
- assertTrue(((Number) data[0]).intValue() > 0);
- assertEquals("XyZX", data[1]);
- assertEquals("IvSub1", data[2]);
+ assertEquals(1, ivRootTable.getRowCount());
+ assertEquals(1, ivSub1Table.getRowCount());
- Object[] subdata = ivSub1Table.select();
- assertEquals(2, subdata.length);
- assertEquals(data[0], subdata[0]);
- assertNull(subdata[1]);
+ Object[] data = ivRootTable.select();
+ assertEquals(3, data.length);
+ assertTrue(data[0] instanceof Number);
+ assertTrue(((Number) data[0]).intValue() > 0);
+ assertEquals("XyZX", data[1]);
+ assertEquals("IvSub1", data[2]);
- ivSub1Table.deleteAll();
- ivRootTable.deleteAll();
+ Object[] subdata = ivSub1Table.select();
+ assertEquals(2, subdata.length);
+ assertEquals(data[0], subdata[0]);
+ assertNull(subdata[1]);
- IvSub1 sub11 = context.newObject(IvSub1.class);
- sub11.setName("XyZXY");
- sub11.setSub1Name("BdE2");
- sub11.getObjectContext().commitChanges();
+ ivSub1Table.deleteAll();
+ ivRootTable.deleteAll();
- data = ivRootTable.select();
- assertEquals(3, data.length);
- assertTrue(data[0] instanceof Number);
- assertTrue(((Number) data[0]).intValue() > 0);
- assertEquals("XyZXY", data[1]);
- assertEquals("IvSub1", data[2]);
+ IvSub1 sub11 = context.newObject(IvSub1.class);
+ sub11.setName("XyZXY");
+ sub11.setSub1Name("BdE2");
+ sub11.getObjectContext().commitChanges();
- subdata = ivSub1Table.select();
- assertEquals(2, subdata.length);
- assertEquals(data[0], subdata[0]);
- assertEquals("BdE2", subdata[1]);
- }
+ data = ivRootTable.select();
+ assertEquals(3, data.length);
+ assertTrue(data[0] instanceof Number);
+ assertTrue(((Number) data[0]).intValue() > 0);
+ assertEquals("XyZXY", data[1]);
+ assertEquals("IvSub1", data[2]);
- public void testInsert_Sub2() throws Exception {
+ subdata = ivSub1Table.select();
+ assertEquals(2, subdata.length);
+ assertEquals(data[0], subdata[0]);
+ assertEquals("BdE2", subdata[1]);
+ }
- TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
- ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
+ public void testInsert_Sub2() throws Exception {
- TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
- ivSub2Table.setColumns("ID", "SUB2_NAME", "SUB2_ATTR");
+ TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+ ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
- IvSub2 sub2 = context.newObject(IvSub2.class);
- sub2.setName("XyZX");
- sub2.getObjectContext().commitChanges();
+ TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
+ ivSub2Table.setColumns("ID", "SUB2_NAME", "SUB2_ATTR");
- assertEquals(1, ivRootTable.getRowCount());
- assertEquals(1, ivSub2Table.getRowCount());
+ IvSub2 sub2 = context.newObject(IvSub2.class);
+ sub2.setName("XyZX");
+ sub2.getObjectContext().commitChanges();
- Object[] data = ivRootTable.select();
- assertEquals(3, data.length);
- assertTrue(data[0] instanceof Number);
- assertTrue(((Number) data[0]).intValue() > 0);
- assertEquals("XyZX", data[1]);
- assertEquals("IvSub2", data[2]);
+ assertEquals(1, ivRootTable.getRowCount());
+ assertEquals(1, ivSub2Table.getRowCount());
- Object[] subdata = ivSub2Table.select();
- assertEquals(3, subdata.length);
- assertEquals(data[0], subdata[0]);
- assertNull(subdata[1]);
- assertNull(subdata[2]);
+ Object[] data = ivRootTable.select();
+ assertEquals(3, data.length);
+ assertTrue(data[0] instanceof Number);
+ assertTrue(((Number) data[0]).intValue() > 0);
+ assertEquals("XyZX", data[1]);
+ assertEquals("IvSub2", data[2]);
- ivSub2Table.deleteAll();
- ivRootTable.deleteAll();
+ Object[] subdata = ivSub2Table.select();
+ assertEquals(3, subdata.length);
+ assertEquals(data[0], subdata[0]);
+ assertNull(subdata[1]);
+ assertNull(subdata[2]);
- IvSub2 sub21 = context.newObject(IvSub2.class);
- sub21.setName("XyZXY");
- sub21.setSub2Name("BdE2");
- sub21.setSub2Attr("aTtR");
- sub21.getObjectContext().commitChanges();
+ ivSub2Table.deleteAll();
+ ivRootTable.deleteAll();
- data = ivRootTable.select();
- assertEquals(3, data.length);
- assertTrue(data[0] instanceof Number);
- assertTrue(((Number) data[0]).intValue() > 0);
- assertEquals("XyZXY", data[1]);
- assertEquals("IvSub2", data[2]);
+ IvSub2 sub21 = context.newObject(IvSub2.class);
+ sub21.setName("XyZXY");
+ sub21.setSub2Name("BdE2");
+ sub21.setSub2Attr("aTtR");
+ sub21.getObjectContext().commitChanges();
- subdata = ivSub2Table.select();
- assertEquals(3, subdata.length);
- assertEquals(data[0], subdata[0]);
- assertEquals("BdE2", subdata[1]);
- assertEquals("aTtR", subdata[2]);
+ data = ivRootTable.select();
+ assertEquals(3, data.length);
+ assertTrue(data[0] instanceof Number);
+ assertTrue(((Number) data[0]).intValue() > 0);
+ assertEquals("XyZXY", data[1]);
+ assertEquals("IvSub2", data[2]);
- sub21.setSub2Attr("BUuT");
- sub21.getObjectContext().commitChanges();
+ subdata = ivSub2Table.select();
+ assertEquals(3, subdata.length);
+ assertEquals(data[0], subdata[0]);
+ assertEquals("BdE2", subdata[1]);
+ assertEquals("aTtR", subdata[2]);
- subdata = ivSub2Table.select();
- assertEquals(3, subdata.length);
- assertEquals(data[0], subdata[0]);
- assertEquals("BdE2", subdata[1]);
- assertEquals("BUuT", subdata[2]);
+ sub21.setSub2Attr("BUuT");
+ sub21.getObjectContext().commitChanges();
- sub21.getObjectContext().deleteObjects(sub21);
- sub21.getObjectContext().commitChanges();
+ subdata = ivSub2Table.select();
+ assertEquals(3, subdata.length);
+ assertEquals(data[0], subdata[0]);
+ assertEquals("BdE2", subdata[1]);
+ assertEquals("BUuT", subdata[2]);
- assertEquals(0, ivRootTable.getRowCount());
- assertEquals(0, ivSub2Table.getRowCount());
- }
+ sub21.getObjectContext().deleteObjects(sub21);
+ sub21.getObjectContext().commitChanges();
- public void testInsert_Sub1Sub1() throws Exception {
+ assertEquals(0, ivRootTable.getRowCount());
+ assertEquals(0, ivSub2Table.getRowCount());
+ }
- TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
- ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
+ public void testInsert_Sub1Sub1() throws Exception {
- TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
- ivSub1Table.setColumns("ID", "SUB1_NAME");
+ TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+ ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
- TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
- ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
+ TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+ ivSub1Table.setColumns("ID", "SUB1_NAME");
- IvSub1Sub1 sub1Sub1 = context.newObject(IvSub1Sub1.class);
- sub1Sub1.setName("XyZN");
- sub1Sub1.setSub1Name("mDA");
- sub1Sub1.setSub1Sub1Name("3DQa");
- sub1Sub1.getObjectContext().commitChanges();
+ TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+ ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
- assertEquals(1, ivRootTable.getRowCount());
- assertEquals(1, ivSub1Table.getRowCount());
- assertEquals(1, ivSub1Sub1Table.getRowCount());
+ IvSub1Sub1 sub1Sub1 = context.newObject(IvSub1Sub1.class);
+ sub1Sub1.setName("XyZN");
+ sub1Sub1.setSub1Name("mDA");
+ sub1Sub1.setSub1Sub1Name("3DQa");
+ sub1Sub1.getObjectContext().commitChanges();
- Object[] data = ivRootTable.select();
- assertEquals(3, data.length);
- assertTrue(data[0] instanceof Number);
- assertTrue(((Number) data[0]).intValue() > 0);
- assertEquals("XyZN", data[1]);
- assertEquals("IvSub1Sub1", data[2]);
+ assertEquals(1, ivRootTable.getRowCount());
+ assertEquals(1, ivSub1Table.getRowCount());
+ assertEquals(1, ivSub1Sub1Table.getRowCount());
- Object[] subdata = ivSub1Table.select();
- assertEquals(2, subdata.length);
- assertEquals(data[0], subdata[0]);
- assertEquals("mDA", subdata[1]);
+ Object[] data = ivRootTable.select();
+ assertEquals(3, data.length);
+ assertTrue(data[0] instanceof Number);
+ assertTrue(((Number) data[0]).intValue() > 0);
+ assertEquals("XyZN", data[1]);
+ assertEquals("IvSub1Sub1", data[2]);
- Object[] subsubdata = ivSub1Sub1Table.select();
- assertEquals(2, subsubdata.length);
- assertEquals(data[0], subsubdata[0]);
- assertEquals("3DQa", subsubdata[1]);
- }
+ Object[] subdata = ivSub1Table.select();
+ assertEquals(2, subdata.length);
+ assertEquals(data[0], subdata[0]);
+ assertEquals("mDA", subdata[1]);
- public void testSelectQuery_SuperSub() throws Exception {
+ Object[] subsubdata = ivSub1Sub1Table.select();
+ assertEquals(2, subsubdata.length);
+ assertEquals(data[0], subsubdata[0]);
+ assertEquals("3DQa", subsubdata[1]);
+ }
- TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
- ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
- Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
+ public void testSelectQuery_SuperSub() throws Exception {
- TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
- ivSub1Table.setColumns("ID", "SUB1_NAME");
+ TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+ ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
+ Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
- // insert
- ivRootTable.insert(1, "xROOT", null);
- ivRootTable.insert(2, "xSUB1_ROOT", "IvSub1");
- ivSub1Table.insert(2, "xSUB1");
+ TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+ ivSub1Table.setColumns("ID", "SUB1_NAME");
- SelectQuery query = new SelectQuery(IvRoot.class);
- List<IvRoot> results = context.performQuery(query);
+ // insert
+ ivRootTable.insert(1, "xROOT", null);
+ ivRootTable.insert(2, "xSUB1_ROOT", "IvSub1");
+ ivSub1Table.insert(2, "xSUB1");
- assertEquals(2, results.size());
+ SelectQuery query = new SelectQuery(IvRoot.class);
+ List<IvRoot> results = context.performQuery(query);
- // since we don't have ordering, need to analyze results in an order agnostic
- // fashion
- Map<String, IvRoot> resultTypes = new HashMap<String, IvRoot>();
+ assertEquals(2, results.size());
- for (IvRoot result : results) {
- resultTypes.put(result.getClass().getName(), result);
- }
+ // since we don't have ordering, need to analyze results in an order
+ // agnostic
+ // fashion
+ Map<String, IvRoot> resultTypes = new HashMap<String, IvRoot>();
- assertEquals(2, resultTypes.size());
+ for (IvRoot result : results) {
+ resultTypes.put(result.getClass().getName(), result);
+ }
- IvRoot root = resultTypes.get(IvRoot.class.getName());
- assertNotNull(root);
- assertEquals("xROOT", root.getName());
- assertNull(root.getDiscriminator());
+ assertEquals(2, resultTypes.size());
- IvSub1 sub1 = (IvSub1) resultTypes.get(IvSub1.class.getName());
- assertNotNull(sub1);
- assertEquals("xSUB1_ROOT", sub1.getName());
- assertEquals("IvSub1", sub1.getDiscriminator());
- }
+ IvRoot root = resultTypes.get(IvRoot.class.getName());
+ assertNotNull(root);
+ assertEquals("xROOT", root.getName());
+ assertNull(root.getDiscriminator());
- public void testSelectQuery_DeepAndWide() throws Exception {
+ IvSub1 sub1 = (IvSub1) resultTypes.get(IvSub1.class.getName());
+ assertNotNull(sub1);
+ assertEquals("xSUB1_ROOT", sub1.getName());
+ assertEquals("IvSub1", sub1.getDiscriminator());
+ }
- TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
- ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
- Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
+ public void testSelectQuery_DeepAndWide() throws Exception {
- TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
- ivSub1Table.setColumns("ID", "SUB1_NAME");
+ TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+ ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
+ Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
- TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
- ivSub2Table.setColumns("ID", "SUB2_NAME");
+ TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+ ivSub1Table.setColumns("ID", "SUB1_NAME");
- TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
- ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
+ TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
+ ivSub2Table.setColumns("ID", "SUB2_NAME");
- // insert
- ivRootTable.insert(1, "xROOT", null);
+ TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+ ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
- ivRootTable.insert(2, "xSUB1_ROOT", "IvSub1");
- ivSub1Table.insert(2, "xSUB1");
+ // insert
+ ivRootTable.insert(1, "xROOT", null);
- ivRootTable.insert(3, "xSUB1_SUB1_ROOT", "IvSub1Sub1");
- ivSub1Table.insert(3, "xSUB1_SUB1_SUBROOT");
- ivSub1Sub1Table.insert(3, "xSUB1_SUB1");
+ ivRootTable.insert(2, "xSUB1_ROOT", "IvSub1");
+ ivSub1Table.insert(2, "xSUB1");
- ivRootTable.insert(4, "xROOT_SUB2", "IvSub2");
- ivSub2Table.insert(4, "xSUB2");
+ ivRootTable.insert(3, "xSUB1_SUB1_ROOT", "IvSub1Sub1");
+ ivSub1Table.insert(3, "xSUB1_SUB1_SUBROOT");
+ ivSub1Sub1Table.insert(3, "xSUB1_SUB1");
- SelectQuery query = new SelectQuery(IvRoot.class);
- List<IvRoot> results = context.performQuery(query);
+ ivRootTable.insert(4, "xROOT_SUB2", "IvSub2");
+ ivSub2Table.insert(4, "xSUB2");
- assertEquals(4, results.size());
+ SelectQuery query = new SelectQuery(IvRoot.class);
+ List<IvRoot> results = context.performQuery(query);
- // since we don't have ordering, need to analyze results in an order agnostic
- // fashion
- Map<String, IvRoot> resultTypes = new HashMap<String, IvRoot>();
+ assertEquals(4, results.size());
- for (IvRoot result : results) {
- resultTypes.put(result.getClass().getName(), result);
- }
+ // since we don't have ordering, need to analyze results in an order
+ // agnostic
+ // fashion
+ Map<String, IvRoot> resultTypes = new HashMap<String, IvRoot>();
- assertEquals(4, resultTypes.size());
+ for (IvRoot result : results) {
+ resultTypes.put(result.getClass().getName(), result);
+ }
- IvRoot root = resultTypes.get(IvRoot.class.getName());
- assertNotNull(root);
- assertEquals("xROOT", root.getName());
- assertNull(root.getDiscriminator());
+ assertEquals(4, resultTypes.size());
- IvSub1 sub1 = (IvSub1) resultTypes.get(IvSub1.class.getName());
- assertNotNull(sub1);
- assertEquals("xSUB1_ROOT", sub1.getName());
- assertEquals("IvSub1", sub1.getDiscriminator());
+ IvRoot root = resultTypes.get(IvRoot.class.getName());
+ assertNotNull(root);
+ assertEquals("xROOT", root.getName());
+ assertNull(root.getDiscriminator());
- IvSub1Sub1 sub1Sub1 = (IvSub1Sub1) resultTypes.get(IvSub1Sub1.class.getName());
- assertNotNull(sub1Sub1);
- assertEquals("xSUB1_SUB1_ROOT", sub1Sub1.getName());
- assertEquals("IvSub1Sub1", sub1Sub1.getDiscriminator());
- assertEquals("xSUB1_SUB1_SUBROOT", sub1Sub1.getSub1Name());
- assertEquals("xSUB1_SUB1", sub1Sub1.getSub1Sub1Name());
+ IvSub1 sub1 = (IvSub1) resultTypes.get(IvSub1.class.getName());
+ assertNotNull(sub1);
+ assertEquals("xSUB1_ROOT", sub1.getName());
+ assertEquals("IvSub1", sub1.getDiscriminator());
- IvSub2 sub2 = (IvSub2) resultTypes.get(IvSub2.class.getName());
- assertNotNull(sub2);
- assertEquals("xROOT_SUB2", sub2.getName());
- assertEquals("IvSub2", sub2.getDiscriminator());
- assertEquals("xSUB2", sub2.getSub2Name());
- }
+ IvSub1Sub1 sub1Sub1 = (IvSub1Sub1) resultTypes.get(IvSub1Sub1.class
+ .getName());
+ assertNotNull(sub1Sub1);
+ assertEquals("xSUB1_SUB1_ROOT", sub1Sub1.getName());
+ assertEquals("IvSub1Sub1", sub1Sub1.getDiscriminator());
+ assertEquals("xSUB1_SUB1_SUBROOT", sub1Sub1.getSub1Name());
+ assertEquals("xSUB1_SUB1", sub1Sub1.getSub1Sub1Name());
- public void testSelectQuery_MiddleLeaf() throws Exception {
+ IvSub2 sub2 = (IvSub2) resultTypes.get(IvSub2.class.getName());
+ assertNotNull(sub2);
+ assertEquals("xROOT_SUB2", sub2.getName());
+ assertEquals("IvSub2", sub2.getDiscriminator());
+ assertEquals("xSUB2", sub2.getSub2Name());
+ }
- TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
- ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
- Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
+ public void testSelectQuery_MiddleLeaf() throws Exception {
- TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
- ivSub1Table.setColumns("ID", "SUB1_NAME");
+ TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+ ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
+ Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
- TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
- ivSub2Table.setColumns("ID", "SUB2_NAME");
+ TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+ ivSub1Table.setColumns("ID", "SUB1_NAME");
- TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
- ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
+ TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
+ ivSub2Table.setColumns("ID", "SUB2_NAME");
- // insert
- ivRootTable.insert(1, "xROOT", null);
+ TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+ ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
- ivRootTable.insert(2, "xSUB1_ROOT", "IvSub1");
- ivSub1Table.insert(2, "xSUB1");
+ // insert
+ ivRootTable.insert(1, "xROOT", null);
- ivRootTable.insert(3, "xSUB1_SUB1_ROOT", "IvSub1Sub1");
- ivSub1Table.insert(3, "xSUB1_SUB1_SUBROOT");
- ivSub1Sub1Table.insert(3, "xSUB1_SUB1");
+ ivRootTable.insert(2, "xSUB1_ROOT", "IvSub1");
+ ivSub1Table.insert(2, "xSUB1");
- ivRootTable.insert(4, "xROOT_SUB2", "IvSub2");
- ivSub2Table.insert(4, "xSUB2");
+ ivRootTable.insert(3, "xSUB1_SUB1_ROOT", "IvSub1Sub1");
+ ivSub1Table.insert(3, "xSUB1_SUB1_SUBROOT");
+ ivSub1Sub1Table.insert(3, "xSUB1_SUB1");
- SelectQuery query = new SelectQuery(IvSub1.class);
- List<IvRoot> results = context.performQuery(query);
+ ivRootTable.insert(4, "xROOT_SUB2", "IvSub2");
+ ivSub2Table.insert(4, "xSUB2");
- assertEquals(2, results.size());
+ SelectQuery query = new SelectQuery(IvSub1.class);
+ List<IvRoot> results = context.performQuery(query);
- // since we don't have ordering, need to analyze results in an order agnostic
- // fashion
- Map<String, IvRoot> resultTypes = new HashMap<String, IvRoot>();
+ assertEquals(2, results.size());
- for (IvRoot result : results) {
- resultTypes.put(result.getClass().getName(), result);
- }
+ // since we don't have ordering, need to analyze results in an order
+ // agnostic
+ // fashion
+ Map<String, IvRoot> resultTypes = new HashMap<String, IvRoot>();
- assertEquals(2, resultTypes.size());
+ for (IvRoot result : results) {
+ resultTypes.put(result.getClass().getName(), result);
+ }
- IvSub1 sub1 = (IvSub1) resultTypes.get(IvSub1.class.getName());
- assertNotNull(sub1);
- assertEquals("xSUB1_ROOT", sub1.getName());
- assertEquals("IvSub1", sub1.getDiscriminator());
+ assertEquals(2, resultTypes.size());
- IvSub1Sub1 sub1Sub1 = (IvSub1Sub1) resultTypes.get(IvSub1Sub1.class.getName());
- assertNotNull(sub1Sub1);
- assertEquals("xSUB1_SUB1_ROOT", sub1Sub1.getName());
- assertEquals("IvSub1Sub1", sub1Sub1.getDiscriminator());
- assertEquals("xSUB1_SUB1_SUBROOT", sub1Sub1.getSub1Name());
- assertEquals("xSUB1_SUB1", sub1Sub1.getSub1Sub1Name());
- }
+ IvSub1 sub1 = (IvSub1) resultTypes.get(IvSub1.class.getName());
+ assertNotNull(sub1);
+ assertEquals("xSUB1_ROOT", sub1.getName());
+ assertEquals("IvSub1", sub1.getDiscriminator());
- public void testDelete_Mix() throws Exception {
+ IvSub1Sub1 sub1Sub1 = (IvSub1Sub1) resultTypes.get(IvSub1Sub1.class
+ .getName());
+ assertNotNull(sub1Sub1);
+ assertEquals("xSUB1_SUB1_ROOT", sub1Sub1.getName());
+ assertEquals("IvSub1Sub1", sub1Sub1.getDiscriminator());
+ assertEquals("xSUB1_SUB1_SUBROOT", sub1Sub1.getSub1Name());
+ assertEquals("xSUB1_SUB1", sub1Sub1.getSub1Sub1Name());
+ }
- TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
- ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
- Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
+ public void testDelete_Mix() throws Exception {
- TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
- ivSub1Table.setColumns("ID", "SUB1_NAME");
+ TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+ ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
+ Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
- TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
- ivSub2Table.setColumns("ID", "SUB2_NAME");
+ TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+ ivSub1Table.setColumns("ID", "SUB1_NAME");
- TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
- ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
+ TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
+ ivSub2Table.setColumns("ID", "SUB2_NAME");
- // insert
- ivRootTable.insert(1, "xROOT", null);
+ TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+ ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
- ivRootTable.insert(2, "xSUB1_ROOT", "IvSub1");
- ivSub1Table.insert(2, "xSUB1");
+ // insert
+ ivRootTable.insert(1, "xROOT", null);
- ivRootTable.insert(3, "xSUB1_SUB1_ROOT", "IvSub1Sub1");
- ivSub1Table.insert(3, "xSUB1_SUB1_SUBROOT");
- ivSub1Sub1Table.insert(3, "xSUB1_SUB1");
+ ivRootTable.insert(2, "xSUB1_ROOT", "IvSub1");
+ ivSub1Table.insert(2, "xSUB1");
- ivRootTable.insert(4, "xROOT_SUB2", "IvSub2");
- ivSub2Table.insert(4, "xSUB2");
+ ivRootTable.insert(3, "xSUB1_SUB1_ROOT", "IvSub1Sub1");
+ ivSub1Table.insert(3, "xSUB1_SUB1_SUBROOT");
+ ivSub1Sub1Table.insert(3, "xSUB1_SUB1");
- SelectQuery query = new SelectQuery(IvRoot.class);
+ ivRootTable.insert(4, "xROOT_SUB2", "IvSub2");
+ ivSub2Table.insert(4, "xSUB2");
- List<IvRoot> results = context.performQuery(query);
+ SelectQuery query = new SelectQuery(IvRoot.class);
- assertEquals(4, results.size());
- Map<String, IvRoot> resultTypes = new HashMap<String, IvRoot>();
+ List<IvRoot> results = context.performQuery(query);
- for (IvRoot result : results) {
- resultTypes.put(result.getClass().getName(), result);
- }
+ assertEquals(4, results.size());
+ Map<String, IvRoot> resultTypes = new HashMap<String, IvRoot>();
- assertEquals(4, resultTypes.size());
+ for (IvRoot result : results) {
+ resultTypes.put(result.getClass().getName(), result);
+ }
- IvRoot root = resultTypes.get(IvRoot.class.getName());
- context.deleteObjects(root);
+ assertEquals(4, resultTypes.size());
- IvSub1 sub1 = (IvSub1) resultTypes.get(IvSub1.class.getName());
- context.deleteObjects(sub1);
+ IvRoot root = resultTypes.get(IvRoot.class.getName());
+ context.deleteObjects(root);
- context.commitChanges();
+ IvSub1 sub1 = (IvSub1) resultTypes.get(IvSub1.class.getName());
+ context.deleteObjects(sub1);
- assertEquals(2, ivRootTable.getRowCount());
- assertEquals(1, ivSub1Table.getRowCount());
- assertEquals(1, ivSub1Sub1Table.getRowCount());
- assertEquals(1, ivSub2Table.getRowCount());
+ context.commitChanges();
- results = context.performQuery(query);
- assertEquals(2, results.size());
- }
+ assertEquals(2, ivRootTable.getRowCount());
+ assertEquals(1, ivSub1Table.getRowCount());
+ assertEquals(1, ivSub1Sub1Table.getRowCount());
+ assertEquals(1, ivSub2Table.getRowCount());
- public void testSelectQuery_AttributeOverrides() throws Exception {
+ results = context.performQuery(query);
+ assertEquals(2, results.size());
+ }
- TableHelper iv1RootTable = new TableHelper(dbHelper, "IV1_ROOT");
- iv1RootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
- Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
+ public void testSelectQuery_AttributeOverrides() throws Exception {
- TableHelper iv1Sub1Table = new TableHelper(dbHelper, "IV1_SUB1");
- iv1Sub1Table.setColumns("ID", "SUB1_NAME");
+ TableHelper iv1RootTable = new TableHelper(dbHelper, "IV1_ROOT");
+ iv1RootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
+ Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
- // insert
- iv1RootTable.insert(1, "xROOT", null);
- iv1RootTable.insert(2, "xSUB1_ROOT", "Iv1Sub1");
- iv1Sub1Table.insert(2, "xSUB1");
+ TableHelper iv1Sub1Table = new TableHelper(dbHelper, "IV1_SUB1");
+ iv1Sub1Table.setColumns("ID", "SUB1_NAME");
- SelectQuery query = new SelectQuery(Iv1Root.class);
- List<Iv1Root> results = context.performQuery(query);
+ // insert
+ iv1RootTable.insert(1, "xROOT", null);
+ iv1RootTable.insert(2, "xSUB1_ROOT", "Iv1Sub1");
+ iv1Sub1Table.insert(2, "xSUB1");
- assertEquals(2, results.size());
+ SelectQuery query = new SelectQuery(Iv1Root.class);
+ List<Iv1Root> results = context.performQuery(query);
- // since we don't have ordering, need to analyze results in an order agnostic
- // fashion
- Map<String, Iv1Root> resultTypes = new HashMap<String, Iv1Root>();
+ assertEquals(2, results.size());
- for (Iv1Root result : results) {
- resultTypes.put(result.getClass().getName(), result);
- }
+ // since we don't have ordering, need to analyze results in an order
+ // agnostic
+ // fashion
+ Map<String, Iv1Root> resultTypes = new HashMap<String, Iv1Root>();
- assertEquals(2, resultTypes.size());
+ for (Iv1Root result : results) {
+ resultTypes.put(result.getClass().getName(), result);
+ }
- Iv1Root root = resultTypes.get(Iv1Root.class.getName());
- assertNotNull(root);
- assertEquals("xROOT", root.getName());
- assertNull(root.getDiscriminator());
+ assertEquals(2, resultTypes.size());
- Iv1Sub1 sub1 = (Iv1Sub1) resultTypes.get(Iv1Sub1.class.getName());
- assertNotNull(sub1);
- assertEquals("xSUB1", sub1.getName());
- }
+ Iv1Root root = resultTypes.get(Iv1Root.class.getName());
+ assertNotNull(root);
+ assertEquals("xROOT", root.getName());
+ assertNull(root.getDiscriminator());
+
+ Iv1Sub1 sub1 = (Iv1Sub1) resultTypes.get(Iv1Sub1.class.getName());
+ assertNotNull(sub1);
+ assertEquals("xSUB1", sub1.getName());
+ }
+
+ public void testInsertWithRelationship() throws SQLException {
+ TableHelper xTable = new TableHelper(dbHelper, "IV2_X");
+ TableHelper rootTable = new TableHelper(dbHelper, "IV2_ROOT");
+ TableHelper sub1Table = new TableHelper(dbHelper, "IV2_SUB1");
+
+ assertEquals(0, xTable.getRowCount());
+ assertEquals(0, rootTable.getRowCount());
+ assertEquals(0, sub1Table.getRowCount());
+
+ Iv2Sub1 root = context.newObject(Iv2Sub1.class);
+ Iv2X x = context.newObject(Iv2X.class);
+ root.setX(x);
+
+ context.commitChanges();
+
+ assertEquals(1, xTable.getRowCount());
+ assertEquals(1, rootTable.getRowCount());
+ assertEquals(1, sub1Table.getRowCount());
+ }
}