Apache JDO Project - [jira] Commented: (JDO-539) JPA annotations tests fail

This is Interesting: Free IT Magazines  
Home > Archive > Apache JDO Project > October 2007 > [jira] Commented: (JDO-539) JPA annotations tests fail





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author [jira] Commented: (JDO-539) JPA annotations tests fail
Craig Russell (JIRA)

2007-10-12, 7:11 pm


[ https://issues.apache.org/jira/brow...action_12534353 ]

Craig Russell commented on JDO-539:
-----------------------------------

> You have a PK field with a column name of PERSONID, and you also want a N-1 to have a FK using the same column (the PK) ? I'd expect the second to have its own column - it cannot reuse the PK (JPA1 has no support for "compound identity"/"identifying" re

lations)

The ability to map a single column to multiple fields is a pretty common extension in JPA implementations. The infrastructure is there to mark one of the field's column as insertable=false, updatable=false. In our case, both Person person and long personi
d are mapped to the same column, but the person column annotation would be marked as not updatable.

If you don't support the insertable=false, updatable=false, you cannot map simple relationships such as Order-OrderLine. With the insertable=false, updatable=false trick, you can at least work around it. And other JPA vendors do implement this trick.

Of course, you could implement the JPA 2 version (still in committee but pretty close to adoption)...

Any hope for a JPOX version that allows us to map the EMPLOYEE_PHONENO_TYPE table using any trick you can think of?

> JPA annotations tests fail
> --------------------------
>
> Key: JDO-539
> URL: https://issues.apache.org/jira/browse/JDO-539
> Project: JDO
> Issue Type: Bug
> Components: tck2
> Affects Versions: JDO 2 maintenance release 1
> Reporter: Michelle Caisse
> Assignee: Michelle Caisse
>
> companyAnnotatedNoRelationshipsJPAConcre
te.conf and companyAnnotatedNoRelationshipsJPAConcre
te.conf fail:
> test(org.apache.jdo.tck.mapping.CompletenessTest)javax.jdo.JDOUserException: One or more instances could not be made persistent
> at org.jpox.AbstractPersistenceManager. makePersistentAll(AbstractPersistenceMan
ager.java:694)
> at org.apache.jdo.tck.mapping.CompletenessTest.localSetUp(CompletenessTest.java:79)
> at org.apache.jdo.tck.JDO_Test.setUp(JDO_Test.java:237)
> at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:253)
> at org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:108)
> at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:148)
> at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:123)
> NestedThrowablesStackTrace:
> javax.jdo.JDOFatalInternalException: Duplicate column name "PERSONID" defined for table "applicationidentity0.EMPLOYEE_PHONENO_TYPE". You cannot map multiple fields to the same column. The duplicated columns are specified by org.apache.jdo.tck.pc.compan

yAnnotatedJPA.JPAAppPhoneNumber.personid and org.apache.jdo.tck.pc.companyAnnotatedJPA.JPAAppPhoneNumber.person.
> at org.jpox.jdo.JPOXJDOHelper. getJDOExceptionForJPOXException(JPOXJDOH
elper.java:369)
> at org.jpox.AbstractPersistenceManager. jdoMakePersistent(AbstractPersistenceMan
ager.java:631)
> at org.jpox.AbstractPersistenceManager. makePersistentAll(AbstractPersistenceMan
ager.java:680)
> at org.apache.jdo.tck.mapping.CompletenessTest.localSetUp(CompletenessTest.java:79)
> at org.apache.jdo.tck.JDO_Test.setUp(JDO_Test.java:237)
> at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:253)
> at org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:108)
> at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:148)
> at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:123)
> NestedThrowablesStackTrace:
> Duplicate column name "PERSONID" defined for table "applicationidentity0.EMPLOYEE_PHONENO_TYPE". You cannot map multiple fields to the same column. The duplicated columns are specified by org.apache.jdo.tck.pc.companyAnnotatedJPA.JPAAppPhoneNumber.perso

nid and org.apache.jdo.tck.pc.companyAnnotatedJPA.JPAAppPhoneNumber.person.
> org.jpox.store.rdbms.exceptions.DuplicateColumnNameException: Duplicate column name "PERSONID" defined for table "applicationidentity0.EMPLOYEE_PHONENO_TYPE". You cannot map multiple fields to the same column. The duplicated columns are specified by org

.apache.jdo.tck.pc.companyAnnotatedJPA.JPAAppPhoneNumber.personid and org.apache.jdo.tck.pc.companyAnnotatedJPA.JPAAppPhoneNumber.person.
> at org.jpox.store.rdbms.table.AbstractTable.addDatastoreField(AbstractTable.java:261)
> at org.jpox.store.rdbms.mapping.RDBMSMappingManager. createDatastoreField(RDBMSMappingManager
.java:840)
> at org.jpox.store.mapping.PersistenceCapableMapping. prepareDatastoreMapping(PersistenceCapab
leMapping.java:227)
> at org.jpox.store.mapping.PersistenceCapableMapping.initialize(PersistenceCapableMapping.java:123)
> at org.jpox.store.mapping.MappingFactory.createMapping(MappingFactory.java:93)
> at org.jpox.store.mapping.AbstractMappingManager.getMapping(AbstractMappingManager.java:234)
> at org.jpox.store.rdbms.table.ClassTable.manageFields(ClassTable.java:520)
> at org.jpox.store.rdbms.table.ClassTable.manageClass(ClassTable.java:400)
> at org.jpox.store.rdbms.table.ClassTable.initializeForClass(ClassTable.java:971)
> at org.jpox.store.rdbms.table.ClassTable.initialize(ClassTable.java:271)
> at org.jpox.store.rdbms.RDBMSManager$ClassAdder.initializeClassTables(RDBMSManager.java:3408)
> at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTablesAndValidate(RDBMSManager.java:3315)
> at org.jpox.store.rdbms.RDBMSManager$ClassAdder.run(RDBMSManager.java:2943)
> at org.jpox.store.rdbms.RDBMSManager$MgmtTransaction.execute(RDBMSManager.java:2822)
> at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:859)
> at org.jpox.store.StoreManager.addClass(StoreManager.java:481)
> at org.jpox.store.StoreManager.getDatastoreClass(StoreManager.java:1089)
> at org.jpox.state.JDOStateManagerImpl. populateStrategyFields(JDOStateManagerIm
pl.java:661)
> at org.jpox.state.JDOStateManagerImpl. initialiseForPersistentNew(JDOStateManag
erImpl.java:408)


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


Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com