cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Gentry (JIRA)" <>
Subject [jira] [Created] (CAY-1813) Missing ObjEntity Attribute Validation with Duplicate DbEntity Columns
Date Tue, 23 Apr 2013 17:13:16 GMT
Michael Gentry created CAY-1813:

             Summary: Missing ObjEntity Attribute Validation with Duplicate DbEntity Columns
                 Key: CAY-1813
             Project: Cayenne
          Issue Type: Improvement
          Components: Modeler
            Reporter: Michael Gentry

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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message