You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Vadim Vertinskiy (JIRA)" <ji...@apache.org> on 2015/11/04 13:24:27 UTC

[jira] [Created] (CAY-2036) Incorrect mapping of database tables from different model maps

Vadim Vertinskiy created CAY-2036:
-------------------------------------

             Summary: Incorrect mapping of database tables from different model maps
                 Key: CAY-2036
                 URL: https://issues.apache.org/jira/browse/CAY-2036
             Project: Cayenne
          Issue Type: Bug
            Reporter: Vadim Vertinskiy


1. Two models (model1.map.xml and model2.map.xml) with different defaultPackage and defaultCatalog are included to cayenne project and both models contains declaration to two different tables with the identical name:
--- model1.map.xml ---
....
	<property name="defaultPackage" value="com.models.model1"/>
	<property name="defaultCatalog" value="mydb1"/>
....
	<db-entity name="myobject" catalog="mydb1">
		<db-attribute name="DB1_ATTRIBUTE1" type="CHAR" length="5"/>
		<db-attribute name="DB1_ATTRIBUTE2" type="CHAR" length="5"/>
		<db-attribute name="DB1_ATTRIBUTE3" type="CHAR" length="5"/>
	</db-entity>
...
	<obj-entity name="MyObject" className="com.models.model1.MyObject" dbEntityName="myobject" >
		<obj-attribute name="db1Attribute1" type="java.lang.String" db-attribute-path="DB1_ATTRIBUTE1"/>
		<obj-attribute name="db1Attribute2" type="java.lang.String" db-attribute-path="DB1_ATTRIBUTE2"/>
		<obj-attribute name="db1Attribute3" type="java.lang.String" db-attribute-path="DB1_ATTRIBUTE3"/>
	</obj-entity>


---- model2.map.xml ---

....
	<property name="defaultPackage" value="com.models.model2"/>
	<property name="defaultCatalog" value="mydb2"/>
....
	<db-entity name="myobject" catalog="mydb2">
		<db-attribute name="DB2_ATTRIBUTE1" type="CHAR" length="5"/>
		<db-attribute name="DB2_ATTRIBUTE2" type="CHAR" length="5"/>
		<db-attribute name="DB2_ATTRIBUTE3" type="CHAR" length="5"/>
	</db-entity>
...
	<obj-entity name="MyObject" className="com.models.model2.MyObject" dbEntityName="myobject" >
		<obj-attribute name="db2Attribute1" type="java.lang.String" db-attribute-path="DB2_ATTRIBUTE1"/>
		<obj-attribute name="db2Attribute2" type="java.lang.String" db-attribute-path="DB2_ATTRIBUTE2"/>
		<obj-attribute name="db2Attribute3" type="java.lang.String" db-attribute-path="DB2_ATTRIBUTE3"/>
	</obj-entity>

2. Following code is used for selection of data from mydb2.myobject:
ObjectSelect.query(com.models.model2.MyObject.class).where(com.models.model2.MyObject.DB2_ATTRIBUTE1.eq("A")).select(context);

3. Following sql is executed as result of query in p.2:
select DB1_ATTRIBUTE1, DB1_ATTRIBUTE2, DB1_ATTRIBUTE3 from mydb2.myobject where DB2_ATTRIBUTE1 = 'A';

As result, select block is formed incorrectly - set of db-attributes form mydb1.myobject table (expected set of db-attributes from mydb2.myobject table)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)