Issue Details (XML | Word | Printable)

Key: JDO-193
Type: Test Test
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Michelle Caisse
Reporter: Craig Russell
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
JDO

Need new test cases for Map and List where there is no join table; the key is a field of the value type or the value is a field of the key type

Created: 26/Oct/05 09:31 PM   Updated: 05/Oct/06 09:08 PM
Return to search
Component/s: tck2
Affects Version/s: JDO 2 final
Fix Version/s: JDO 2 maintenance release 1

Time Tracking:
Not Specified

File Attachments:
  Size
Text File Licensed for inclusion in ASF works JDO-193.patch 2006-09-08 04:08 AM Michelle Caisse 248 kB
Environment: TCK

Resolution Date: 05/Oct/06 09:08 PM


 Description  « Hide
JDO allows mapping of Maps where there is no join table. The metadata for the Employee/Department mapping uses the mapped-by attribute of the map element:

<class name="Department">
<field name="employees" mapped-by="dept">
<key mapped-by="id"/>
</field>
</class>

<class name="Employee">
<field name="id" column="ID"/>
<field name="dept" column="DEPT"/>
</class>

Another mapping would have the key of the Map be the Employee and the value be the id.

We should probably define a separate package for this mapping, as there is some confusion in using parts of the Company model where we have changed a significant part of the model.

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Craig Russell added a comment - 18/Mar/06 12:34 AM
I propose to defer this for a maintenance revision of the TCK.

Craig Russell added a comment - 16/Jun/06 04:21 AM
JDO also allows mapping Lists where there is no join table, and the ordering element is contained in the related table.

This should be investigated at the same time.

Michelle Caisse added a comment - 08/Sep/06 04:08 AM
The attached patch implements a test for Map mapped without a join table. The test fails:

javax.jdo.JDOUserException: One or more instances could not be made persistent
at org.jpox.AbstractPersistenceManager.makePersistentAll(AbstractPersistenceManager.java:1293)
at org.apache.jdo.tck.mapping.CompletenessTestMap.localSetUp(CompletenessTestMap.java:78)
at org.apache.jdo.tck.JDO_Test.setUp(JDO_Test.java:236)
at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:252)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)
NestedThrowablesStackTrace:
javax.jdo.JDOUserException: Unable to find the field "department" in the class "org.apache.jdo.tck.pc.companyMapWithoutJoin.Person" with a relationship to the field "org.apache.jdo.tck.pc.companyMapWithoutJoin.Department.roles"
at org.jpox.store.rdbms.table.ClassTable.initializeSQLAddUniqueConstraintsStatements(ClassTable.java:1994)
at org.jpox.store.rdbms.table.ClassTable.runSpecifiedCallbacks(ClassTable.java:904)
at org.jpox.store.rdbms.table.ClassTable.runCallBacks(ClassTable.java:869)
at org.jpox.store.rdbms.table.ClassTable.addFieldMetaData(ClassTable.java:562)
at org.jpox.store.rdbms.table.ClassTable.manageClass(ClassTable.java:388)
at org.jpox.store.rdbms.RDBMSManager$ClassAdder.initializeClassTables(RDBMSManager.java:2869)
at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTablesAndValidate(RDBMSManager.java:3214)
at org.jpox.store.rdbms.RDBMSManager$ClassAdder.run(RDBMSManager.java:2457)
at org.jpox.store.rdbms.RDBMSManager$MgmtTransaction.execute(RDBMSManager.java:2309)
at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:725)
at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:739)
at org.jpox.store.StoreManager.getDatastoreClass(StoreManager.java:1142)
at org.jpox.state.StateManagerImpl.populateStrategyFields(StateManagerImpl.java:764)
at org.jpox.state.StateManagerImpl.<init>(StateManagerImpl.java:565)
at org.jpox.state.StateManagerFactory.newStateManager(StateManagerFactory.java:105)
at org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1185)
at org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1241)
at org.jpox.AbstractPersistenceManager.makePersistentAll(AbstractPersistenceManager.java:1283)
at org.apache.jdo.tck.mapping.CompletenessTestMap.localSetUp(CompletenessTestMap.java:78)
at org.apache.jdo.tck.JDO_Test.setUp(JDO_Test.java:236)
at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:252)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122

Michelle Caisse added a comment - 08/Sep/06 08:35 PM
Checked in patch at revision 441641

Michelle Caisse added a comment - 19/Sep/06 10:27 PM
Added files for mapping List without a join table: revision: 447999

Michelle Caisse added a comment - 05/Oct/06 09:08 PM
JDO-430 is now tracking the remaining issues on this case.