/* * 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.test.event.update; import java.util.List; import org.apache.lucene.search.Query; import org.hibernate.Transaction; import org.hibernate.search.FullTextQuery; import org.hibernate.search.FullTextSession; import org.hibernate.search.Search; import org.hibernate.search.query.dsl.QueryBuilder; import org.hibernate.search.test.SearchTestBase; import org.hibernate.search.testsupport.TestForIssue; import org.junit.Test; import org.junit.Assert; /** * @author Davide D'Alto * @author Sanne Grinovero */ @TestForIssue(jiraKey = "HSEARCH-1999") public class DirtyCheckingTest extends SearchTestBase { @Test public void testName() throws Exception { try ( FullTextSession s = Search.getFullTextSession( openSession() ) ) { Transaction tx = s.beginTransaction(); { CheeseRollingCompetitor cheeser = new CheeseRollingCompetitor(); cheeser.id = 1; cheeser.nickname = "Jimmy Fontina"; s.persist( cheeser ); } tx.commit(); s.clear(); assertExists( s, "Jimmy", "Jimmy Fontina" ); tx = s.beginTransaction(); CheeseRollingCompetitor johnny = s.get( CheeseRollingCompetitor.class, 1 ); johnny.nickname = "Johnny Fontina"; tx.commit(); s.clear(); assertExists( s, "Johnny", "Johnny Fontina" ); tx = s.beginTransaction(); s.delete( johnny ); tx.commit(); } } private void assertExists(FullTextSession s, String keyword, String expectedProjection) { QueryBuilder queryBuilder = s.getSearchFactory().buildQueryBuilder().forEntity( CheeseRollingCompetitor.class ).get(); Query q = queryBuilder.keyword().onField( "Nickname" ).matching( keyword ).createQuery(); FullTextQuery fullTextQuery = s.createFullTextQuery( q, CheeseRollingCompetitor.class ).setProjection( "Nickname" ); List list = fullTextQuery.list(); Assert.assertEquals( 1, list.size() ); Assert.assertEquals( expectedProjection, ( (Object[]) list.get( 0 ) )[0] ); s.clear(); } @Override public Class<?>[] getAnnotatedClasses() { return new Class<?>[]{ CheeseRollingCompetitor.class }; } }