/*
* 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.id;
import static org.junit.Assert.assertEquals;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.SearchFactory;
import org.hibernate.search.spi.SearchIntegrator;
import org.hibernate.search.test.util.FullTextSessionBuilder;
import org.hibernate.search.testsupport.setup.CountingErrorHandler;
import org.junit.Rule;
import org.junit.Test;
/**
* Verifies the MassIndexer can deal correctly with entities which have a composite id
*/
public class CompositedIdMassIndexingTest {
@Rule
public FullTextSessionBuilder ftsBuilder = new FullTextSessionBuilder()
.addAnnotatedClass( RegistrationId.class )
.addAnnotatedClass( StudentEntity.class )
.setProperty( "hibernate.search.error_handler", CountingErrorHandler.class.getName() )
.build();
@Test
public void testReindexingWithCompositeIds() throws InterruptedException {
try ( FullTextSession fullTextSession = ftsBuilder.openFullTextSession() ) {
storeTestData( fullTextSession );
}
try ( FullTextSession fullTextSession = ftsBuilder.openFullTextSession() ) {
fullTextSession.createIndexer().startAndWait();
}
SearchFactory searchFactory = ftsBuilder.getSearchFactory();
SearchIntegrator searchIntegrator = searchFactory.unwrap( SearchIntegrator.class );
CountingErrorHandler errorHandler = (CountingErrorHandler) searchIntegrator.getErrorHandler();
assertEquals( 0, errorHandler.getTotalCount() );
}
private void storeTestData(Session session) {
Transaction tx = session.beginTransaction();
RegistrationId firstId = new RegistrationId();
firstId.setDepartment( "Software Engineering" );
firstId.setStudentId( 1 );
StudentEntity firstStudent = new StudentEntity();
firstStudent.setRegid( firstId );
firstStudent.setName( "I am noone" );
session.save( firstStudent );
tx.commit();
session.clear();
}
}