package com.manning.hsia.dvdstore.test; import java.util.List; import org.apache.lucene.index.Term; import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.search.Search; import org.testng.annotations.Test; import com.manning.hsia.dvdstore.model.Drink; import com.manning.hsia.dvdstore.model.Dvd; public class InheritanceTest extends com.manning.hsia.dvdstore.util.TestCase { @Test(groups="ch03") public void inheritance() throws Exception { Session s = factory.openSession(); Transaction tx = s.beginTransaction(); Dvd dvd = new Dvd(); dvd.setDescription("A movie about Hobbits"); dvd.setEan("1234567890123"); dvd.setTitle("The Lord of the Ring"); s.save(dvd); Drink wine = new Drink(); wine.setAlcoholicBeverage(true); wine.setTitle("Mouton Cadet"); wine.setDescription("Good and consistent French wine"); s.save(wine); tx.commit(); tx = s.beginTransaction(); Query luceneQuery = new TermQuery( new Term("alcoholicBeverage", "true") ); List results = Search.getFullTextSession(s).createFullTextQuery(luceneQuery, Drink.class).list(); assert results.size() == 1 : "Alcoholic filter failed"; luceneQuery = new TermQuery( new Term("title", "ring") ); results = Search.getFullTextSession(s).createFullTextQuery(luceneQuery, Dvd.class, Drink.class).list(); assert results.size() == 1 : "Polymorphic query"; tx.commit(); s.close(); } }