When using NOT NULL constraint on foreign key it is not possible to use 
CascadeType.ALL and GeneratedId
-------------------------------------------------------------------------------------------------------

                 Key: OPENJPA-177
                 URL: https://issues.apache.org/jira/browse/OPENJPA-177
             Project: OpenJPA
          Issue Type: Bug
          Components: jpa
    Affects Versions: 0.9.6
         Environment: Windows XP, IBM 32-bit SDK 5.0, WebSphere 6.1
            Reporter: Daniel Gajdos


When using on entity Application
        @OneToOne(cascade = CascadeType.ALL)
        @JoinColumn(name = "C_PERSON_ID", nullable=false)
        @ForeignKey
        private Person person;
and on entity Person using generated ID, it fails on inserting Application 
because of performing db actions in this order:
INSERT INTO T_APPLICATION (C_ID, C_APPLICATION_NUMBER, C_APPLIED_DATE, 
C_STATUS) VALUES (:1, :2, :3, :4) - here it tries to insert null value as       
         C_PERSON_ID, which is not permited because of nullable=false 
declaration. This declaration creates NOT NULL constraint on C_PERSON_ID.
INSERT INTO NSVISP.T_PERSON (C_ID, C_BIRTH_DATE, C_FIRST_NAME, C_LAST_NAME) 
VALUES (:1, :2, :3, :4)
UPDATE NSVISP.T_APPLICATION SET C_PERSON_ID = :1 WHERE C_ID = :2
Error reported from DB:
org.apache.openjpa.lib.jdbc.ReportingSQLException: ORA-01400: cannot insert 
NULL into ("T_APPLICATION"."C_PERSON_ID")

Is there any chance to change the order in which this operations are executed? 
On this type of constraint we have to insert Person before inserting 
Application and include the generated Person Id into insert statement for 
Application. Otherwise we have to deffer the NOT NULL constraint which can be 
dangerous and it is not defered initialy.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to