/* * Hibernate Search, full-text search for your domain model * * 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.search.elasticsearch.test; import java.util.List; import javax.persistence.EntityManager; import org.hibernate.search.elasticsearch.ElasticsearchProjectionConstants; import org.hibernate.search.elasticsearch.ElasticsearchQueries; import org.hibernate.search.elasticsearch.testutil.JsonHelper; import org.hibernate.search.jpa.FullTextEntityManager; import org.hibernate.search.jpa.Search; import org.hibernate.search.query.engine.spi.QueryDescriptor; import org.hibernate.search.test.jpa.JPATestCase; import org.junit.After; import org.junit.Before; import org.junit.Test; /** * @author Gunnar Morling */ public class ElasticsearchJpaIT extends JPATestCase { @Before public void setupTestData() { EntityManager em = factory.createEntityManager(); em.getTransaction().begin(); GolfPlayer hergesheimer = new GolfPlayer.Builder() .firstName( "Klaus" ) .lastName( "Hergesheimer" ) .build(); em.persist( hergesheimer ); em.getTransaction().commit(); em.close(); } @After public void deleteTestData() { EntityManager em = factory.createEntityManager(); FullTextEntityManager ftem = Search.getFullTextEntityManager( em ); ftem.getTransaction().begin(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match_all' : {} } }" ); List<?> result = ftem.createFullTextQuery( query ).getResultList(); for ( Object entity : result ) { ftem.remove( entity ); } ftem.getTransaction().commit(); ftem.close(); } @Test public void testQueryViaEntityManager() { EntityManager em = factory.createEntityManager(); FullTextEntityManager ftem = Search.getFullTextEntityManager( em ); ftem.getTransaction().begin(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'lastName' : 'Hergesheimer' } } }" ); Object[] result = (Object[]) ftem.createFullTextQuery( query, GolfPlayer.class ) .setProjection( ElasticsearchProjectionConstants.SOURCE ) .getSingleResult(); String source = (String) result[0]; JsonHelper.assertJsonEqualsIgnoringUnknownFields( "{" + "'lastName': 'Hergesheimer'," + "'fullName': 'Klaus Hergesheimer'," + "}", source ); ftem.getTransaction().commit(); ftem.close(); } @Override public Class<?>[] getAnnotatedClasses() { return new Class[] { GolfPlayer.class, GolfCourse.class, Hole.class }; } }