You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrus Adamchik (JIRA)" <ji...@apache.org> on 2014/02/16 05:31:20 UTC

[jira] [Updated] (CAY-1813) Missing ObjEntity Attribute Validation with Duplicate DbEntity Columns

     [ https://issues.apache.org/jira/browse/CAY-1813?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrus Adamchik updated CAY-1813:
---------------------------------

    Fix Version/s:     (was: 3.1RC1)
                   3.1 (final)

> Missing ObjEntity Attribute Validation with Duplicate DbEntity Columns
> ----------------------------------------------------------------------
>
>                 Key: CAY-1813
>                 URL: https://issues.apache.org/jira/browse/CAY-1813
>             Project: Cayenne
>          Issue Type: Improvement
>          Components: Modeler
>            Reporter: Michael Gentry
>            Assignee: Michael Gentry
>             Fix For: 3.0.3, 3.1 (final), 3.2.M2
>
>
> If you have two ObjEntity attributes mapped to the same DbEntity column, this should produce a validation warning.
> Real world example (from <obj-entity> tag):
>   <obj-attribute name="addressFrom" type="java.lang.String" db-attribute-path="DRIVER_ID"/>
>   <obj-attribute name="driverId" type="java.math.BigInteger" db-attribute-path="DRIVER_ID"/>
> In this example, addressFrom was mistakenly mapped to the DRIVER_ID column with no validation warning.  DRIVER_ID is a foreign key.
> At runtime, trying to fault to the driver using getDriver(), this SQL was produced:
> SELECT ... WHERE t0.ID = ? [bind: 1->ID:'1'] (note the quotes)
> The Cayenne runtime found the first mistakenly-mapped DRIVER_ID and used it, which happened to be a String, causing the SQL to be incorrectly produced and the fault to fail.
> This was difficult to track down.  A validation check to make sure the DB columns aren't mapped more than once would be helpful to eliminate errors.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)