openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Albert Lee (Updated) (JIRA)" <>
Subject [jira] [Updated] (OPENJPA-1057) Foreign keys are not properly set for ConstraintUpdateManager to determine the correct order of the sql
Date Fri, 03 Feb 2012 16:24:06 GMT


Albert Lee updated OPENJPA-1057:

    Affects Version/s: 2.2.0
        Fix Version/s:     (was: 2.2.0)

Move fix version to 2.3.0 in-preparation for 2.2.0 release.
> Foreign keys are not properly set for ConstraintUpdateManager to determine the correct
order of the sql
> -------------------------------------------------------------------------------------------------------
>                 Key: OPENJPA-1057
>                 URL:
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.0.0-M2, 2.1.1, 2.2.0
>            Reporter: Fay Wang
>            Assignee: Fay Wang
>             Fix For: 2.3.0
>         Attachments: OPENJPA-1057.patch
> In the following situations, foreign keys are not properly set in the RowImpl for ConstraintUpdateManager
to correctly determine the order of sql:
> (1) bottom-up table creation for primary table and secondary table with foreign key referencing
the primary table: Both primary and secondary tables are used to store the data in an entity,
which has the annotation as below:
>    @Table(name="Tbl1")   
>    @SecondaryTable(name="Tbl2",pkJoinColumns=@PrimaryKeyJoinColumn(name="ID"))   
>    public class EntityA implements Serializable {
> ...
>     }
> In this situation, Openjpa fails to record the foreign key information in the secondary
row. Without the foreign key constraint information, the ConstraintUpdateManager is unable
to determine the ordering correctly.
> (2) bottom up table creation for an entity and its toOne/toMany relation with foreign
key constraint. For example:
> create table Bidir1to1A (id integer not null, age integer not null, name varchar(30),
primary key (id));
> create table Bidir1to1B (id integer not null, name varchar(30), entitya_id integer, primary
key (id));
> alter table Bidir1to1B add constraint FK452ACC2BD7410520 foreign key (entitya_id) references
> In this situation, Openjpa reads in the database foreign key constraint. If the relation
field does not have ForeignKey annotation, or the ForeignKey annotation has deleteAction set
>     @OneToOne(cascade=CascadeType.REMOVE)  
>     @ForeignKey(deleteAction=ForeignKeyAction.DEFAULT)
>     public Unidir1to1B  entityb;
> this foreign key constraint will not be recorded in the RowImpl due to the deleteAction
= ForeignKey.ACTION_NONE. The lack of foreign key constraint information in the RowImpl leads
to the wrong ordering of the sql by the ConstraintUpdateManager.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message