/** Test of the retrieval of PKs. */ public void testPrimaryKeyRetrieval() { addClassesToSchema(new Class[] {SchemaClass1.class, SchemaClass2.class}); PersistenceManager pm = pmf.getPersistenceManager(); RDBMSStoreManager databaseMgr = (RDBMSStoreManager) storeMgr; // Retrieve the table for SchemaClass1 ClassLoaderResolver clr = storeMgr.getNucleusContext().getClassLoaderResolver(null); DatastoreClass table1 = databaseMgr.getDatastoreClass(SchemaClass1.class.getName(), clr); DatastoreClass table2 = databaseMgr.getDatastoreClass(SchemaClass2.class.getName(), clr); // Check for the FK using the schema handler StoreSchemaHandler handler = databaseMgr.getSchemaHandler(); Connection con = (Connection) databaseMgr .getConnection(((JDOPersistenceManager) pm).getExecutionContext()) .getConnection(); RDBMSTablePKInfo pkInfo1 = (RDBMSTablePKInfo) handler.getSchemaData(con, "primary-keys", new Object[] {table1}); RDBMSTablePKInfo pkInfo2 = (RDBMSTablePKInfo) handler.getSchemaData(con, "primary-keys", new Object[] {table2}); // Expecting 2 PK columns for SchemaClass1 // TODO Enable checks on the PK name (when JDBC drivers return it correctly) assertEquals( "Number of PKs for table " + table1 + " is wrong", 2, pkInfo1.getNumberOfChildren()); PrimaryKeyInfo pk = (PrimaryKeyInfo) pkInfo1.getChild(0); assertEquals("Column Name is wrong", "TABLE1_ID1", pk.getProperty("column_name")); // assertEquals("PK Name is wrong", "TABLE1_PK", pk.getProperty("pk_name")); pk = (PrimaryKeyInfo) pkInfo1.getChild(1); assertEquals("Column Name is wrong", "TABLE1_ID2", pk.getProperty("column_name")); // assertEquals("PK Name is wrong", "TABLE1_PK", pk.getProperty("pk_name")); // Expecting 1 PK column for SchemaClass assertEquals( "Number of PKs for table " + table1 + " is wrong", 1, pkInfo2.getNumberOfChildren()); pk = (PrimaryKeyInfo) pkInfo2.getChild(0); assertEquals("Column Name is wrong", "TABLE2_ID", pk.getProperty("column_name")); // assertEquals("PK Name is wrong", "TABLE2_PK", pk.getProperty("pk_name")); }