Index: JUnitEJBQLUnitTestSuite.java =================================================================== RCS file: /cvs/glassfish/entity-persistence-tests/src/java/oracle/toplink/essentials/testing/tests/ejb/ejbqltesting/JUnitEJBQLUnitTestSuite.java,v retrieving revision 1.11 diff -u -r1.11 JUnitEJBQLUnitTestSuite.java --- JUnitEJBQLUnitTestSuite.java 9 Mar 2007 15:19:45 -0000 1.11 +++ JUnitEJBQLUnitTestSuite.java 29 Jun 2007 12:42:49 -0000 @@ -119,6 +119,7 @@ suite.addTest(new JUnitEJBQLUnitTestSuite("testFirstResultOnNamedQuery")); suite.addTest(new JUnitEJBQLUnitTestSuite("testInvertedSelectionCriteriaNullPK")); suite.addTest(new JUnitEJBQLUnitTestSuite("testInvertedSelectionCriteriaInvalidQueryKey")); + suite.addTest(new JUnitEJBQLUnitTestSuite("testDistinctSelectForEmployeeWithNullAddress")); return new TestSetup(suite) { @@ -405,6 +406,25 @@ Assert.assertNull("Exception was caught.", exception); } + /* + * For GF3233, Distinct process fail with NPE when relationship has NULL-valued target. + */ + public void testDistinctSelectForEmployeeWithNullAddress(){ + oracle.toplink.essentials.ejb.cmp3.EntityManager em = (oracle.toplink.essentials.ejb.cmp3.EntityManager) createEntityManager(); + try { + em.getTransaction().begin(); + Employee emp = new Employee(); + emp.setFirstName("Dummy"); + emp.setLastName("Person"); + em.persist(emp); + em.flush(); + List resultList = em.createQuery("SELECT DISTINCT e.address FROM Employee e").getResultList(); + }finally{ + em.getTransaction().rollback(); + } + } + + public static void main(String[] args) { junit.swingui.TestRunner.main(args);