/* * 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.datastore.neo4j.test.mapping; import static org.hibernate.ogm.datastore.neo4j.dialect.impl.NodeLabel.ENTITY; import static org.hibernate.ogm.datastore.neo4j.test.dsl.GraphAssertions.node; import javax.persistence.EntityManager; import org.hibernate.ogm.backendtck.associations.manytoone.SalesForce; import org.hibernate.ogm.backendtck.associations.manytoone.SalesGuy; import org.hibernate.ogm.datastore.neo4j.test.dsl.NodeForGraphAssertions; import org.hibernate.ogm.datastore.neo4j.test.dsl.RelationshipsChainForGraphAssertions; import org.junit.Before; import org.junit.Test; /** * @author Davide D'Alto */ public class BidirectionalManyToOneTest extends Neo4jJpaTestCase { private SalesGuy simon; private SalesGuy eric; private SalesForce salesForce; @Before public void prepareDb() throws Exception { EntityManager em = getFactory().createEntityManager(); em.getTransaction().begin(); salesForce = new SalesForce( "red_hat" ); salesForce.setCorporation( "Red Hat" ); em.persist( salesForce ); eric = new SalesGuy( "eric" ); eric.setName( "Eric" ); eric.setSalesForce( salesForce ); salesForce.getSalesGuys().add( eric ); em.persist( eric ); simon = new SalesGuy( "simon" ); simon.setName( "Simon" ); simon.setSalesForce( salesForce ); salesForce.getSalesGuys().add( simon ); em.persist( simon ); em.getTransaction().commit(); em.close(); } @Test public void testMapping() throws Exception { NodeForGraphAssertions forceNode = node( "force", SalesForce.class.getSimpleName(), ENTITY.name() ) .property( "id", salesForce.getId() ) .property( "corporation", salesForce.getCorporation() ); NodeForGraphAssertions ericNode = node( "eric", SalesGuy.class.getSimpleName(), ENTITY.name() ) .property( "id", eric.getId() ) .property( "name", eric.getName() ); NodeForGraphAssertions simonNode = node( "simon", SalesGuy.class.getSimpleName(), ENTITY.name() ) .property( "id", simon.getId() ) .property( "name", simon.getName() ); RelationshipsChainForGraphAssertions relationship1 = ericNode.relationshipTo( forceNode, "salesForce" ); RelationshipsChainForGraphAssertions relationship2 = simonNode.relationshipTo( forceNode, "salesForce" ); assertThatOnlyTheseNodesExist( forceNode, ericNode, simonNode ); assertThatOnlyTheseRelationshipsExist( relationship1, relationship2 ); } @Override public Class<?>[] getAnnotatedClasses() { return new Class[] { SalesForce.class, SalesGuy.class }; } }