[
https://issues.apache.org/jira/browse/OPENJPA-1057?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Donald Woods updated OPENJPA-1057:
----------------------------------
Patch Info: [Patch Available]
> Foreign keys are not properly set for ConstraintUpdateManager to determine
> the correct order of the sql
> -------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-1057
> URL: https://issues.apache.org/jira/browse/OPENJPA-1057
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 2.0.0-M2
> Reporter: Fay Wang
> Assignee: Fay Wang
> Fix For: 2.0.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",pkjoincolum...@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 Bidir1to1A;
> 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 to DEFAULT:
> @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.
-
You can reply to this email to add a comment to the issue online.