/*
* 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.associations.manytoone;
import java.util.Arrays;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.ogm.utils.GridDialectType;
import org.hibernate.ogm.utils.OgmTestCase;
import org.hibernate.ogm.utils.SkipByGridDialect;
import org.junit.Test;
import static org.fest.assertions.Assertions.assertThat;
/**
* @author Emmanuel Bernard
*/
@SkipByGridDialect(
value = { GridDialectType.INFINISPAN_REMOTE },
comment = "Basket.products list - bag semantics unsupported (no primary key)"
)
public class ManyToOneExtraTest extends OgmTestCase {
@Test
public void testUnidirectionalOneToMany() throws Exception {
final Session session = openSession();
Transaction tx = session.beginTransaction();
Product beer = new Product( "Beer", "Tactical nuclear penguin" );
session.persist( beer );
Product pretzel = new Product( "Pretzel", "Glutino Pretzel Sticks" );
session.persist( pretzel );
Basket basket = new Basket();
basket.setId( "davide_basket" );
basket.setOwner( "Davide" );
basket.setProducts( Arrays.asList( beer, pretzel ) );
session.persist( basket );
tx.commit();
session.clear();
tx = session.beginTransaction();
basket = (Basket) session.get( Basket.class, basket.getId() );
assertThat( basket ).isNotNull();
assertThat( basket.getId() ).isEqualTo( basket.getId() );
assertThat( basket.getProducts() )
.onProperty( "name" ).containsOnly( beer.getName(), pretzel.getName() );
tx.commit();
session.clear();
tx = session.beginTransaction();
session.delete( basket );
session.delete( pretzel );
session.delete( beer );
tx.commit();
session.close();
checkCleanCache();
}
@Override
protected Class<?>[] getAnnotatedClasses() {
return new Class<?>[] {
Basket.class,
Product.class,
};
}
}