@Test @TestForIssue(jiraKey = "OGM-1294") public void testJpqlReturnPropertiesForChildren() { initDB(); em.getTransaction().begin(); List<Person> persons = em.createQuery( "FROM Person p where p.name IN (:names)", Person.class ) .setParameter( "names", Arrays.asList( susan.getName(), mark.getName() ) ).getResultList(); assertThat( persons ).hasSize( 2 ); for ( Person person : persons ) { assertThat( person ).isInstanceOf( Child.class ); assertThat( ( (Child) person ).getFavouriteToy() ).isIn( susan.getFavouriteToy(), mark.getFavouriteToy() ); } em.getTransaction().commit(); }
@Test @TestForIssue(jiraKey = "OGM-1294") @SkipByDatastoreProvider( value = { MONGODB, NEO4J_BOLT, NEO4J_HTTP, NEO4J_EMBEDDED, INFINISPAN_REMOTE }, comment = "They don't support queries on polymorphic entities using TABLE_PER_CLASS inheritance strategy; requires multiple queries") public void testJpqlReturnPropertiesForChildren() { initDB(); em.getTransaction().begin(); List<Person> persons = em.createQuery( "FROM Person p where p.name IN :names", Person.class ) .setParameter( "names", Arrays.asList( susan.getName(), mark.getName() ) ).getResultList(); assertThat( persons ).hasSize( 2 ); for ( Person person : persons ) { assertThat( person ).isInstanceOf( Child.class ); assertThat( ( (Child) person ).getFavouriteToy() ).isIn( susan.getFavouriteToy(), mark.getFavouriteToy() ); } em.getTransaction().commit(); }
@Test @TestForIssue(jiraKey = "OGM-1294") public void testJpqlReturnPropertiesForSubClasses() { initDB(); em.getTransaction().begin(); List<Person> persons = em.createQuery( "FROM Person p", Person.class ).getResultList(); for ( Person person : persons ) { if ( person instanceof Man ) { assertThat( ( (Man) person ).getHobby() ).isEqualTo( john.getHobby() ); } else if ( person instanceof Woman ) { assertThat( ( (Woman) person ).getJob() ).isEqualTo( jane.getJob() ); } else if ( person instanceof Child ) { assertThat( ( (Child) person ).getFavouriteToy() ).isIn( susan.getFavouriteToy(), mark.getFavouriteToy() ); } else { fail( "Unexpected result: " + person ); } } em.getTransaction().commit(); }
@Test @TestForIssue(jiraKey = "OGM-1294") public void testPolymorphicAssociation() { initDB(); em.getTransaction().begin(); Family family = em.createQuery( "FROM Family f", Family.class ).getSingleResult(); List<Person> members = family.getMembers(); assertThat( members ).hasSize( familyMembers.size() ); for ( Person person : members ) { if ( person instanceof Man ) { assertThat( ( (Man) person ).getHobby() ).isEqualTo( john.getHobby() ); } else if ( person instanceof Woman ) { assertThat( ( (Woman) person ).getJob() ).isEqualTo( jane.getJob() ); } else if ( person instanceof Child ) { assertThat( ( (Child) person ).getFavouriteToy() ).isIn( susan.getFavouriteToy(), mark.getFavouriteToy() ); } else { fail( "Unexpected result: " + person ); } } em.getTransaction().commit(); }
@Test @TestForIssue(jiraKey = "OGM-1294") @SkipByDatastoreProvider( value = { MONGODB, NEO4J_BOLT, NEO4J_HTTP, NEO4J_EMBEDDED, INFINISPAN_REMOTE }, comment = "They don't support queries on polymorphic entities using TABLE_PER_CLASS inheritance strategy; requires multiple queries") public void testJpqlReturnPropertiesForSubClasses() { initDB(); em.getTransaction().begin(); List<Person> persons = em.createQuery( "FROM Person p", Person.class ).getResultList(); for ( Person person : persons ) { if ( person instanceof Man ) { assertThat( ( (Man) person ).getHobby() ).isEqualTo( john.getHobby() ); } else if ( person instanceof Woman ) { assertThat( ( (Woman) person ).getJob() ).isEqualTo( jane.getJob() ); } else if ( person instanceof Child ) { assertThat( ( (Child) person ).getFavouriteToy() ).isIn( susan.getFavouriteToy(), mark.getFavouriteToy() ); } else { fail( "Unexpected result: " + person ); } } em.getTransaction().commit(); }
@Test @TestForIssue(jiraKey = "OGM-1294") @SkipByDatastoreProvider( value = { MONGODB, NEO4J_BOLT, NEO4J_HTTP, NEO4J_EMBEDDED, INFINISPAN_REMOTE }, comment = "They don't support queries on polymorphic entities using TABLE_PER_CLASS inheritance strategy; requires multiple queries") public void testPolymorphicAssociation() { initDB(); em.getTransaction().begin(); Family family = em.createQuery( "FROM Family f", Family.class ).getSingleResult(); List<Person> members = family.getMembers(); assertThat( members ).hasSize( familyMembers.size() ); for ( Person person : members ) { if ( person instanceof Man ) { assertThat( ( (Man) person ).getHobby() ).isEqualTo( john.getHobby() ); } else if ( person instanceof Woman ) { assertThat( ( (Woman) person ).getJob() ).isEqualTo( jane.getJob() ); } else if ( person instanceof Child ) { assertThat( ( (Child) person ).getFavouriteToy() ).isIn( susan.getFavouriteToy(), mark.getFavouriteToy() ); } else { fail( "Unexpected result: " + person ); } } em.getTransaction().commit(); }