You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Fay Wang (JIRA)" <ji...@apache.org> on 2008/08/07 23:32:44 UTC

[jira] Created: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
------------------------------------------------------------------------------------------------------------------------

                 Key: OPENJPA-679
                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
             Project: OpenJPA
          Issue Type: Bug
            Reporter: Fay Wang


<openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: 0
    at
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
    at
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
    at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
    at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
....

Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at
org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
    at
org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
    at
org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
    at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
    at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
    at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
    at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
    at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
    at
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
    at
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
    at
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)


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


[jira] Updated: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Fay Wang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fay Wang updated OPENJPA-679:
-----------------------------

    Attachment: testcase_679.patch

The attached openjpa test case is based on the original test case provided by Gopalakrishnan U.

> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>         Attachments: identifying_rel_test.zip, openjpa_679.patch, openjpa_679_1.patch, testcase_679.patch
>
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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


[jira] Updated: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Fay Wang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fay Wang updated OPENJPA-679:
-----------------------------

    Attachment: openjpa_679.patch

The attached patch will force the field mapping in question to be resolved again after the primary keys of all the entities in the persistent unit are resolved. Any comments are mostly appreciated. A test case will be attached shortly.

> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>         Attachments: openjpa_679.patch
>
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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


[jira] Updated: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Catalina Wei (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Catalina Wei updated OPENJPA-679:
---------------------------------

    Attachment: identifying_rel_test.zip

Hi All,
Attaching a test scenario provided by Gopalakrishnan U that  reproduced the ArrayIndexOutOfBoundsException in OpenJPA .

The problem is in resolving foreignkey for the following annotation in CM class of the testcase:

@Entity
@IdClass(CM.CMId.class)
public class CM {

    @ManyToOne
    @ForeignKey
    @Id
    private E e;

Notice that the ManyToOne relation is annotated as @ForeignKey and @Id,  
OpenJpa failed in resolving the  foreignKey mapping for CM entity.

Gopal worked around this problem by 
rename class C to class WC
rename class CM to WCM

OpenJPA revolves class mapping in the alphabetic order of entity names.
As you see that by renaming C to WC and CM to WCM, the entity class E gets resolved first, hence, the forigenKey field e in CM gets resolved correctly.

Fay's patch is to making sure that foreignKey mapping is resolved no matter to in what  the order we resolve the entities.



> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>         Attachments: identifying_rel_test.zip, openjpa_679.patch, openjpa_679_1.patch
>
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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


[jira] Assigned: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Michael Dick (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Dick reassigned OPENJPA-679:
------------------------------------

    Assignee: Fay Wang  (was: Catalina Wei)

Thanks for the updated patch Fay. I'm testing the fix on 1.2.1 now. 

> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>            Assignee: Fay Wang
>             Fix For: 1.2.1, 1.3.0
>
>         Attachments: identifying_rel_test.zip, OPENJPA-679.patch, openjpa_679.patch, openjpa_679_1.patch, testcase_679.patch
>
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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


[jira] Updated: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Fay Wang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fay Wang updated OPENJPA-679:
-----------------------------

    Attachment: OPENJPA-679.patch

This patch will fix the ReverseMappingTool problem.

> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>            Assignee: Catalina Wei
>             Fix For: 1.2.1, 1.3.0
>
>         Attachments: identifying_rel_test.zip, OPENJPA-679.patch, openjpa_679.patch, openjpa_679_1.patch, testcase_679.patch
>
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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


[jira] Reopened: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Michael Dick (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Dick reopened OPENJPA-679:
----------------------------------


This issue causes problems with the reverse mapping tool. To reproduce the problem just run the reversemapping example..

I'm reopening the issue to either fix the problem or revert to the original behavior. 

> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>            Assignee: Catalina Wei
>             Fix For: 1.2.1, 1.3.0
>
>         Attachments: identifying_rel_test.zip, openjpa_679.patch, openjpa_679_1.patch, testcase_679.patch
>
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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


[jira] Updated: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Fay Wang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fay Wang updated OPENJPA-679:
-----------------------------

    Attachment: openjpa_679_1.patch

The patch is based on the most updated ClassMapping.java

> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>         Attachments: openjpa_679.patch, openjpa_679_1.patch
>
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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


[jira] Commented: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Fay Wang (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12620757#action_12620757 ] 

Fay Wang commented on OPENJPA-679:
----------------------------------

This problem is found by Gopalakrishnan U. A JIRA is open on behalf on him. This problem may happen when a relation field is annotated as both a primary key and a foreign key. When Openjpa resolves the class matedata, it first resolves the primary keys of all the entities in the persistent unit. After the primary keys of all the entities are resolved, it then goes ahead to resolve the non-relation field. It is normally in the stage of resolving non-relation fields that the foreign key is constructed.

Since  a relation field is a primary key, it gets resolved in the first stage. However, since it is also a relation field, the foreign key construction is triggered when setting the strategy  to this field. If the primary key information of the parent entity is not yet available, some of the foreign key fields will be missing. If it happens that the primary key information of the parent entity is already resolved (just as some experiment shows by manipulating the entity class name so that the primary key of the parent entity gets resolved first before the child entity), then the foreign key constructed in this stage will be good and complete.



> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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


[jira] Closed: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Catalina Wei (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Catalina Wei closed OPENJPA-679.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 1.3.0
                   1.2.1
         Assignee: Catalina Wei

Fix checked in under r685042

> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>            Assignee: Catalina Wei
>             Fix For: 1.2.1, 1.3.0
>
>         Attachments: identifying_rel_test.zip, openjpa_679.patch, openjpa_679_1.patch, testcase_679.patch
>
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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


[jira] Resolved: (OPENJPA-679) java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key

Posted by "Michael Dick (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Dick resolved OPENJPA-679.
----------------------------------

    Resolution: Fixed

> java.lang.ArrayIndexOutOfBoundsException may occur when a relation field is annotated as a primary key and a foreign key
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-679
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-679
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Fay Wang
>            Assignee: Fay Wang
>             Fix For: 1.2.1, 1.3.0
>
>         Attachments: identifying_rel_test.zip, OPENJPA-679.patch, openjpa_679.patch, openjpa_679_1.patch, testcase_679.patch
>
>
> <openjpa-1.2.0-SNAPSHOT-rexported nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: 0
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:196)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> ....
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getForeignKeyConstraintSQL(DBDictionary.java:3373)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.getAddForeignKeySQL(DBDictionary.java:3252)
>     at
> org.apache.openjpa.jdbc.schema.SchemaTool.addForeignKey(SchemaTool.java:1066)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:604)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>     at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>     at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)

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