/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.backendtck.callbacks; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.HashSet; import java.util.Set; import javax.persistence.EntityManager; import org.hibernate.ogm.utils.GridDialectType; import org.hibernate.ogm.utils.SkipByGridDialect; import org.hibernate.ogm.utils.jpa.OgmJpaTestCase; import org.junit.After; import org.junit.Test; /** * @author David Williams */ @SkipByGridDialect( value = { GridDialectType.INFINISPAN_REMOTE }, comment = "Zoo.animals set - bag semantics unsupported (no primary key)" ) public class PostLoadTest extends OgmJpaTestCase { /** * Load an entity with an embedded collection which uses a @PostLoad annotated method * to record the collection size */ @Test public void testFieldSetInPostLoad() { EntityManager em = getFactory().createEntityManager(); em.getTransaction().begin(); Zoo zoo = new Zoo(); zoo.setId( 1 ); Set<Animal> animals = new HashSet<Animal>(); animals.add( createAnimal( "Giraffe" ) ); animals.add( createAnimal( "Elephant" ) ); animals.add( createAnimal( "Panda" ) ); zoo.setAnimals( animals ); em.persist( zoo ); em.getTransaction().commit(); em.clear(); em.getTransaction().begin(); zoo = em.find( Zoo.class, zoo.getId() ); assertNotNull( zoo ); assertEquals( 3, zoo.getNrOfAnimals() ); em.getTransaction().commit(); em.close(); } @Test public void testFieldSetInPostLoadByListener() { EntityManager em = getFactory().createEntityManager(); em.getTransaction().begin(); Zoo zoo = new Zoo(); zoo.setId( 1 ); Set<Animal> animals = new HashSet<Animal>(); animals.add( createAnimal( "Giraffe" ) ); animals.add( createAnimal( "Elephant" ) ); animals.add( createAnimal( "Panda" ) ); zoo.setAnimals( animals ); em.persist( zoo ); em.getTransaction().commit(); em.clear(); em.getTransaction().begin(); zoo = em.find( Zoo.class, zoo.getId() ); assertNotNull( zoo ); assertEquals( 3, zoo.getNrOfAnimalsByListener() ); em.getTransaction().commit(); em.close(); } private Animal createAnimal(String name) { Animal animal = new Animal(); animal.setName( name ); return animal; } @After public void removeEntities() throws Exception { EntityManager em = getFactory().createEntityManager(); em.getTransaction().begin(); em.remove( em.find( Zoo.class, 1 ) ); em.getTransaction().commit(); em.close(); } @Override public Class<?>[] getAnnotatedClasses() { return new Class<?>[] { Zoo.class }; } }