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 2006/05/08 04:03:07 UTC
svn commit: r404892 - in
/incubator/cayenne/main/trunk/cayenne/cayenne-java/src:
cayenne/java/org/objectstyle/cayenne/dba/hsqldb/
tests/java/org/objectstyle/cayenne/testdo/relationship/
tests/java/org/objectstyle/cayenne/testdo/relationship/auto/ tests...
Author: aadamchik
Date: Sun May 7 19:03:04 2006
New Revision: 404892
URL: http://svn.apache.org/viewcvs?rev=404892&view=rev
Log:
CAY-191 - not sure how this works on Firebird, but MySQL and HSQL do handle type mismatch transparently.
Added:
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/FkOfDifferentType.java
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_FkOfDifferentType.java
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/jira/CAY_191Tst.java
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/dml/unit.jira.CAY_191Tst.xml
Modified:
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/hsqldb/HSQLDBAdapter.java
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_RelationshipHelper.java
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/AccessStackAdapter.java
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/relationships.map.xml
Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/hsqldb/HSQLDBAdapter.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/hsqldb/HSQLDBAdapter.java?rev=404892&r1=404891&r2=404892&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/hsqldb/HSQLDBAdapter.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/hsqldb/HSQLDBAdapter.java Sun May 7 19:03:04 2006
@@ -56,11 +56,14 @@
package org.objectstyle.cayenne.dba.hsqldb;
+import java.sql.PreparedStatement;
import java.util.Collection;
import java.util.Iterator;
import org.objectstyle.cayenne.CayenneRuntimeException;
import org.objectstyle.cayenne.access.DataNode;
+import org.objectstyle.cayenne.access.types.DefaultType;
+import org.objectstyle.cayenne.access.types.ExtendedTypeMap;
import org.objectstyle.cayenne.dba.JdbcAdapter;
import org.objectstyle.cayenne.map.DbAttribute;
import org.objectstyle.cayenne.map.DbEntity;
@@ -76,31 +79,36 @@
* use with HSQLDB are shown below:
*
* <pre>
- *
- * test-hsqldb.cayenne.adapter = org.objectstyle.cayenne.dba.hsqldb.HSQLDBAdapter
- * test-hsqldb.jdbc.username = test
- * test-hsqldb.jdbc.password = secret
- * test-hsqldb.jdbc.url = jdbc:hsqldb:hsql://serverhostname
- * test-hsqldb.jdbc.driver = org.hsqldb.jdbcDriver
- *
+ *
+ * test-hsqldb.cayenne.adapter = org.objectstyle.cayenne.dba.hsqldb.HSQLDBAdapter
+ * test-hsqldb.jdbc.username = test
+ * test-hsqldb.jdbc.password = secret
+ * test-hsqldb.jdbc.url = jdbc:hsqldb:hsql://serverhostname
+ * test-hsqldb.jdbc.driver = org.hsqldb.jdbcDriver
+ *
* </pre>
*
* @author Holger Hoffstaette
*/
public class HSQLDBAdapter extends JdbcAdapter {
+ protected void configureExtendedTypes(ExtendedTypeMap map) {
+ super.configureExtendedTypes(map);
+ map.registerType(new ShortType());
+ map.registerType(new ByteType());
+ }
+
/**
- * Generate fully-qualified name for 1.8 and on. Subclass generates unqualified name.
+ * Generate fully-qualified name for 1.8 and on. Subclass generates unqualified name.
*
* @since 1.2
*/
- protected String getTableName(DbEntity entity)
- {
- return entity.getFullyQualifiedName();
+ protected String getTableName(DbEntity entity) {
+ return entity.getFullyQualifiedName();
}
-
+
/**
- * Generate fully-qualified name for 1.8 and on. Subclass generates unqualified name.
+ * Generate fully-qualified name for 1.8 and on. Subclass generates unqualified name.
*
* @since 1.2
*/
@@ -139,7 +147,7 @@
buf.append("ALTER TABLE ").append(srcName);
buf.append(" ADD CONSTRAINT ");
-
+
buf.append(getSchemaName(source));
buf.append("U_");
buf.append(source.getName());
@@ -161,7 +169,7 @@
return buf.toString();
}
-
+
/**
* Adds an ADD CONSTRAINT clause to a relationship constraint.
*
@@ -179,7 +187,7 @@
// hsqldb requires the ADD CONSTRAINT statement
buf.append(" ADD CONSTRAINT ");
- buf.append(getSchemaName((DbEntity)rel.getSourceEntity()));
+ buf.append(getSchemaName((DbEntity) rel.getSourceEntity()));
buf.append("C_");
buf.append(rel.getSourceEntity().getName());
buf.append("_");
@@ -221,7 +229,7 @@
*/
public String createTable(DbEntity ent) {
// SET SCHEMA <schemaname>
-
+
String sql = super.createTable(ent);
if (sql != null && sql.toUpperCase().startsWith("CREATE TABLE ")) {
@@ -229,5 +237,53 @@
}
return sql;
+ }
+
+ final class ShortType extends DefaultType {
+
+ ShortType() {
+ super(Short.class.getName());
+ }
+
+ public void setJdbcObject(
+ PreparedStatement st,
+ Object val,
+ int pos,
+ int type,
+ int precision) throws Exception {
+
+ if (val == null) {
+ super.setJdbcObject(st, val, pos, type, precision);
+ }
+ else {
+
+ short s = ((Number) val).shortValue();
+ st.setShort(pos, s);
+ }
+ }
+ }
+
+ final class ByteType extends DefaultType {
+
+ ByteType() {
+ super(Byte.class.getName());
+ }
+
+ public void setJdbcObject(
+ PreparedStatement st,
+ Object val,
+ int pos,
+ int type,
+ int precision) throws Exception {
+
+ if (val == null) {
+ super.setJdbcObject(st, val, pos, type, precision);
+ }
+ else {
+
+ byte b = ((Number) val).byteValue();
+ st.setByte(pos, b);
+ }
+ }
}
}
Added: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/FkOfDifferentType.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/FkOfDifferentType.java?rev=404892&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/FkOfDifferentType.java (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/FkOfDifferentType.java Sun May 7 19:03:04 2006
@@ -0,0 +1,10 @@
+package org.objectstyle.cayenne.testdo.relationship;
+
+import org.objectstyle.cayenne.testdo.relationship.auto._FkOfDifferentType;
+
+public class FkOfDifferentType extends _FkOfDifferentType {
+
+}
+
+
+
Added: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_FkOfDifferentType.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_FkOfDifferentType.java?rev=404892&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_FkOfDifferentType.java (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_FkOfDifferentType.java Sun May 7 19:03:04 2006
@@ -0,0 +1,23 @@
+package org.objectstyle.cayenne.testdo.relationship.auto;
+
+/** Class _FkOfDifferentType 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 class _FkOfDifferentType extends org.objectstyle.cayenne.CayenneDataObject {
+
+ public static final String RELATIONSHIP_HELPER_PROPERTY = "relationshipHelper";
+
+ public static final String ID_PK_COLUMN = "ID";
+
+ public void setRelationshipHelper(org.objectstyle.cayenne.testdo.relationship.RelationshipHelper relationshipHelper) {
+ setToOneTarget("relationshipHelper", relationshipHelper, true);
+ }
+
+ public org.objectstyle.cayenne.testdo.relationship.RelationshipHelper getRelationshipHelper() {
+ return (org.objectstyle.cayenne.testdo.relationship.RelationshipHelper)readProperty("relationshipHelper");
+ }
+
+
+}
Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_RelationshipHelper.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_RelationshipHelper.java?rev=404892&r1=404891&r2=404892&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_RelationshipHelper.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/testdo/relationship/auto/_RelationshipHelper.java Sun May 7 19:03:04 2006
@@ -1,5 +1,7 @@
package org.objectstyle.cayenne.testdo.relationship.auto;
+import java.util.List;
+
/** Class _RelationshipHelper 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.
@@ -8,6 +10,9 @@
public class _RelationshipHelper extends org.objectstyle.cayenne.CayenneDataObject {
public static final String NAME_PROPERTY = "name";
+ public static final String FKS_OF_DIFFERENT_TYPE_PROPERTY = "fksOfDifferentType";
+ public static final String MEANIGFUL_FKS_PROPERTY = "meanigfulFKs";
+ public static final String REFLEXIVE_AND_TO_ONE_ARRAY_PROPERTY = "reflexiveAndToOneArray";
public static final String RELATIONSHIP_HELPER_ID_PK_COLUMN = "RELATIONSHIP_HELPER_ID";
@@ -16,6 +21,39 @@
}
public String getName() {
return (String)readProperty("name");
+ }
+
+
+ public void addToFksOfDifferentType(org.objectstyle.cayenne.testdo.relationship.FkOfDifferentType obj) {
+ addToManyTarget("fksOfDifferentType", obj, true);
+ }
+ public void removeFromFksOfDifferentType(org.objectstyle.cayenne.testdo.relationship.FkOfDifferentType obj) {
+ removeToManyTarget("fksOfDifferentType", obj, true);
+ }
+ public List getFksOfDifferentType() {
+ return (List)readProperty("fksOfDifferentType");
+ }
+
+
+ public void addToMeanigfulFKs(org.objectstyle.cayenne.testdo.relationship.MeaningfulFK obj) {
+ addToManyTarget("meanigfulFKs", obj, true);
+ }
+ public void removeFromMeanigfulFKs(org.objectstyle.cayenne.testdo.relationship.MeaningfulFK obj) {
+ removeToManyTarget("meanigfulFKs", obj, true);
+ }
+ public List getMeanigfulFKs() {
+ return (List)readProperty("meanigfulFKs");
+ }
+
+
+ public void addToReflexiveAndToOneArray(org.objectstyle.cayenne.testdo.relationship.ReflexiveAndToOne obj) {
+ addToManyTarget("reflexiveAndToOneArray", obj, true);
+ }
+ public void removeFromReflexiveAndToOneArray(org.objectstyle.cayenne.testdo.relationship.ReflexiveAndToOne obj) {
+ removeToManyTarget("reflexiveAndToOneArray", obj, true);
+ }
+ public List getReflexiveAndToOneArray() {
+ return (List)readProperty("reflexiveAndToOneArray");
}
Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/AccessStackAdapter.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/AccessStackAdapter.java?rev=404892&r1=404891&r2=404892&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/AccessStackAdapter.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/AccessStackAdapter.java Sun May 7 19:03:04 2006
@@ -175,6 +175,10 @@
}
public boolean supportsFKConstraints(DbEntity entity) {
+ if("FK_OF_DIFFERENT_TYPE".equals(entity.getName())) {
+ return false;
+ }
+
return adapter.supportsFkConstraints();
}
Added: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/jira/CAY_191Tst.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/jira/CAY_191Tst.java?rev=404892&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/jira/CAY_191Tst.java (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/unit/jira/CAY_191Tst.java Sun May 7 19:03:04 2006
@@ -0,0 +1,82 @@
+/* ====================================================================
+ *
+ * The ObjectStyle Group Software License, version 1.1
+ * ObjectStyle Group - http://objectstyle.org/
+ *
+ * Copyright (c) 2002-2005, Andrei (Andrus) Adamchik and individual authors
+ * of the software. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any,
+ * must include the following acknowlegement:
+ * "This product includes software developed by independent contributors
+ * and hosted on ObjectStyle Group web site (http://objectstyle.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse
+ * or promote products derived from this software without prior written
+ * permission. For written permission, email
+ * "andrus at objectstyle dot org".
+ *
+ * 5. Products derived from this software may not be called "ObjectStyle"
+ * or "Cayenne", nor may "ObjectStyle" or "Cayenne" appear in their
+ * names without prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals and hosted on ObjectStyle Group web site. For more
+ * information on the ObjectStyle Group, please see
+ * <http://objectstyle.org/>.
+ */
+package org.objectstyle.cayenne.unit.jira;
+
+import org.objectstyle.cayenne.DataObjectUtils;
+import org.objectstyle.cayenne.access.DataContext;
+import org.objectstyle.cayenne.testdo.relationship.FkOfDifferentType;
+import org.objectstyle.cayenne.unit.RelationshipTestCase;
+
+public class CAY_191Tst extends RelationshipTestCase {
+
+ public void testResolveToOneOverFKOfDifferentNumType() throws Exception {
+ // this is mostly for legacy schemas, as on many dbs you won;t be able to even
+ // create the FK constraint...
+
+ deleteTestData();
+ createTestData("testResolveToOneOverFKOfDifferentNumType");
+
+ DataContext context = createDataContext();
+ FkOfDifferentType root = (FkOfDifferentType) DataObjectUtils.objectForPK(
+ context,
+ FkOfDifferentType.class,
+ 1);
+
+ assertNotNull(root);
+ assertNotNull(root.getRelationshipHelper());
+ assertEquals("RH1", root.getRelationshipHelper().getName());
+ }
+}
Added: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/dml/unit.jira.CAY_191Tst.xml
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/dml/unit.jira.CAY_191Tst.xml?rev=404892&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/dml/unit.jira.CAY_191Tst.xml (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/dml/unit.jira.CAY_191Tst.xml Sun May 7 19:03:04 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<beans default-lazy-init="true">
+ <!-- ======================================= -->
+ <!-- Named Queries -->
+ <!-- ======================================= -->
+ <bean id="RH1" class="org.objectstyle.cayenne.unit.util.UpdatingSQLTemplate">
+ <constructor-arg type="java.lang.Class"><value>org.objectstyle.cayenne.testdo.relationship.FkOfDifferentType</value></constructor-arg>
+ <constructor-arg><value>
+ insert into RELATIONSHIP_HELPER (NAME, RELATIONSHIP_HELPER_ID) values ('RH1', 1)
+ </value></constructor-arg>
+ </bean>
+
+ <bean id="FD1" class="org.objectstyle.cayenne.unit.util.UpdatingSQLTemplate">
+ <constructor-arg type="java.lang.Class"><value>org.objectstyle.cayenne.testdo.relationship.FkOfDifferentType</value></constructor-arg>
+ <constructor-arg><value>
+ insert into FK_OF_DIFFERENT_TYPE (ID, RELATIONSHIP_HELPER_FK) values (1, 1)
+ </value></constructor-arg>
+ </bean>
+
+
+
+ <!-- ======================================= -->
+ <!-- Data Sets -->
+ <!-- ======================================= -->
+ <bean id="testResolveToOneOverFKOfDifferentNumType" class="java.util.ArrayList">
+ <constructor-arg>
+ <list>
+ <ref bean="RH1"/>
+ <ref bean="FD1"/>
+ </list>
+ </constructor-arg>
+ </bean>
+</beans>
\ No newline at end of file
Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/relationships.map.xml
URL: http://svn.apache.org/viewcvs/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/relationships.map.xml?rev=404892&r1=404891&r2=404892&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/relationships.map.xml (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/resources/relationships.map.xml Sun May 7 19:03:04 2006
@@ -38,6 +38,10 @@
<db-attribute name="DELETE_RULE_TEST_3_FK" type="INTEGER"/>
<db-attribute name="DELETE_RULE_TEST_3_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
</db-entity>
+ <db-entity name="FK_OF_DIFFERENT_TYPE">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+ <db-attribute name="RELATIONSHIP_HELPER_FK" type="SMALLINT"/>
+ </db-entity>
<db-entity name="FLATTENED_TEST_1">
<db-attribute name="FT1_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
<db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
@@ -104,6 +108,8 @@
</obj-entity>
<obj-entity name="DeleteRuleTest3" className="org.objectstyle.cayenne.testdo.relationship.DeleteRuleTest3" dbEntityName="DELETE_RULE_TEST3">
</obj-entity>
+ <obj-entity name="FkOfDifferentType" className="org.objectstyle.cayenne.testdo.relationship.FkOfDifferentType" dbEntityName="FK_OF_DIFFERENT_TYPE">
+ </obj-entity>
<obj-entity name="FlattenedTest1" className="org.objectstyle.cayenne.testdo.relationship.FlattenedTest1" dbEntityName="FLATTENED_TEST_1">
<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
</obj-entity>
@@ -176,6 +182,9 @@
<db-relationship name="toDeleteRuleTest2" source="DELETE_RULE_TEST3" target="DELETE_RULE_TEST2" toMany="false">
<db-attribute-pair source="DELETE_RULE_TEST_3_FK" target="DEL_RULE_TEST2_ID"/>
</db-relationship>
+ <db-relationship name="relationshipHelper" source="FK_OF_DIFFERENT_TYPE" target="RELATIONSHIP_HELPER" toMany="false">
+ <db-attribute-pair source="RELATIONSHIP_HELPER_FK" target="RELATIONSHIP_HELPER_ID"/>
+ </db-relationship>
<db-relationship name="complexJoins" source="FLATTENED_TEST_1" target="COMPLEX_JOIN" toMany="true">
<db-attribute-pair source="FT1_ID" target="FT1_FK"/>
</db-relationship>
@@ -206,6 +215,9 @@
<db-relationship name="toParent" source="REFLEXIVE_AND_TO_ONE" target="REFLEXIVE_AND_TO_ONE" toMany="false">
<db-attribute-pair source="PARENT_ID" target="REFLEXIVE_AND_TO_ONE_ID"/>
</db-relationship>
+ <db-relationship name="fksOfDifferentType" source="RELATIONSHIP_HELPER" target="FK_OF_DIFFERENT_TYPE" toMany="true">
+ <db-attribute-pair source="RELATIONSHIP_HELPER_ID" target="RELATIONSHIP_HELPER_FK"/>
+ </db-relationship>
<db-relationship name="meanigfulFKs" source="RELATIONSHIP_HELPER" target="MEANINGFUL_FK" toMany="true">
<db-attribute-pair source="RELATIONSHIP_HELPER_ID" target="RELATIONSHIP_HELPER_ID"/>
</db-relationship>
@@ -238,6 +250,7 @@
<obj-relationship name="deleteRuleTest3Array" source="DeleteRuleTest2" target="DeleteRuleTest3" db-relationship-path="deleteRuleTest3Array"/>
<obj-relationship name="test1Array" source="DeleteRuleTest2" target="DeleteRuleTest1" deleteRule="Nullify" db-relationship-path="test1Array"/>
<obj-relationship name="toDeleteRuleTest2" source="DeleteRuleTest3" target="DeleteRuleTest2" db-relationship-path="toDeleteRuleTest2"/>
+ <obj-relationship name="relationshipHelper" source="FkOfDifferentType" target="RelationshipHelper" db-relationship-path="relationshipHelper"/>
<obj-relationship name="ft2Array" source="FlattenedTest1" target="FlattenedTest2" db-relationship-path="ft2Array"/>
<obj-relationship name="ft3Array" source="FlattenedTest1" target="FlattenedTest3" db-relationship-path="ft2Array.ft3Array"/>
<obj-relationship name="ft3OverComplex" source="FlattenedTest1" target="FlattenedTest3" db-relationship-path="complexJoins.toFT3"/>
@@ -249,6 +262,9 @@
<obj-relationship name="children" source="ReflexiveAndToOne" target="ReflexiveAndToOne" db-relationship-path="children"/>
<obj-relationship name="toHelper" source="ReflexiveAndToOne" target="RelationshipHelper" db-relationship-path="toHelper"/>
<obj-relationship name="toParent" source="ReflexiveAndToOne" target="ReflexiveAndToOne" db-relationship-path="toParent"/>
+ <obj-relationship name="fksOfDifferentType" source="RelationshipHelper" target="FkOfDifferentType" db-relationship-path="fksOfDifferentType"/>
+ <obj-relationship name="meanigfulFKs" source="RelationshipHelper" target="MeaningfulFK" db-relationship-path="meanigfulFKs"/>
+ <obj-relationship name="reflexiveAndToOneArray" source="RelationshipHelper" target="ReflexiveAndToOne" db-relationship-path="reflexiveAndToOneArray"/>
<obj-relationship name="root" source="ToManyFkDep" target="ToManyFkRoot" db-relationship-path="root"/>
<obj-relationship name="root2" source="ToManyFkDep" target="ToManyRoot2" db-relationship-path="root2"/>
<obj-relationship name="deps" source="ToManyFkRoot" target="ToManyFkDep" db-relationship-path="deps"/>