Author: hardy.ferentschik
Date: 2009-04-29 11:02:11 -0400 (Wed, 29 Apr 2009)
New Revision: 16476
Modified:
search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
search/trunk/src/test/java/org/hibernate/search/test/id/EmbeddedIdTest.java
Log:
HSEARCH-306, HSEARCH-248
Added a test for composite ids. You need at least two entries in the result to get the bug
to manifest itself
Modified:
search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
===================================================================
---
search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java 2009-04-29
14:45:14 UTC (rev 16475)
+++
search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java 2009-04-29
15:02:11 UTC (rev 16476)
@@ -160,7 +160,6 @@
}
}
-
protected void checkDocumentId(XProperty member, PropertiesMetadata propertiesMetadata,
boolean isRoot, String prefix, InitContext context) {
Annotation idAnnotation = getIdAnnotation( member, context );
if ( idAnnotation != null ) {
Modified: search/trunk/src/test/java/org/hibernate/search/test/id/EmbeddedIdTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/id/EmbeddedIdTest.java 2009-04-29
14:45:14 UTC (rev 16475)
+++ search/trunk/src/test/java/org/hibernate/search/test/id/EmbeddedIdTest.java 2009-04-29
15:02:11 UTC (rev 16476)
@@ -3,48 +3,92 @@
import java.util.List;
-import org.hibernate.search.test.SearchTestCase;
-import org.hibernate.search.Search;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.TermQuery;
+
import org.hibernate.Session;
import org.hibernate.Transaction;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.index.Term;
+import org.hibernate.search.Search;
+import org.hibernate.search.test.SearchTestCase;
/**
* @author Emmanuel Bernard
*/
public class EmbeddedIdTest extends SearchTestCase {
public void testFieldBridge() throws Exception {
- PersonPK emmPk = new PersonPK();
- emmPk.setFirstName( "Emmanuel" );
- emmPk.setLastName( "Bernard" );
- Person emm = new Person();
- emm.setFavoriteColor( "Blue" );
- emm.setId( emmPk );
- Session s = openSession( );
+ PersonPK emmanuelPk = new PersonPK();
+ emmanuelPk.setFirstName( "Emmanuel" );
+ emmanuelPk.setLastName( "Bernard" );
+ Person emmanuel = new Person();
+ emmanuel.setFavoriteColor( "Blue" );
+ emmanuel.setId( emmanuelPk );
+
+ Session s = openSession();
Transaction tx = s.beginTransaction();
- s.save(emm);
+ s.save( emmanuel );
tx.commit();
s.clear();
+
tx = s.beginTransaction();
List results = Search.getFullTextSession( s ).createFullTextQuery(
- new TermQuery( new Term("id.lastName", "Bernard" ) ) ).list();
+ new TermQuery( new Term( "id.lastName", "Bernard" ) )
+ ).list();
assertEquals( 1, results.size() );
- emm = (Person) results.get(0);
- emm.setFavoriteColor( "Red" );
+ emmanuel = ( Person ) results.get( 0 );
+ emmanuel.setFavoriteColor( "Red" );
tx.commit();
s.clear();
+
tx = s.beginTransaction();
results = Search.getFullTextSession( s ).createFullTextQuery(
- new TermQuery( new Term("id.lastName", "Bernard" ) ) ).list();
+ new TermQuery( new Term( "id.lastName", "Bernard" ) )
+ ).list();
assertEquals( 1, results.size() );
- emm = (Person) results.get(0);
- assertEquals( "Red", emm.getFavoriteColor() );
+ emmanuel = ( Person ) results.get( 0 );
+ assertEquals( "Red", emmanuel.getFavoriteColor() );
s.delete( results.get( 0 ) );
tx.commit();
s.close();
+ }
+ /**
+ * HSEARCH-HSEARCH-306, HSEARCH-248
+ *
+ * @throws Exception throws exception in case the test fails.
+ */
+ public void testSafeFromTupleId() throws Exception {
+ PersonPK emmanuelPk = new PersonPK();
+ emmanuelPk.setFirstName( "Emmanuel" );
+ emmanuelPk.setLastName( "Bernard" );
+ Person emmanuel = new Person();
+ emmanuel.setFavoriteColor( "Blue" );
+ emmanuel.setId( emmanuelPk );
+
+ PersonPK johnPk = new PersonPK();
+ johnPk.setFirstName( "John" );
+ johnPk.setLastName( "Doe" );
+ Person john = new Person();
+ john.setFavoriteColor( "Blue" );
+ john.setId( johnPk );
+
+ Session s = openSession();
+ Transaction tx = s.beginTransaction();
+ s.save( emmanuel );
+ s.save( john );
+ tx.commit();
+ s.clear();
+
+ tx = s.beginTransaction();
+
+ // we need a query which has at least the size of two.
+ List results = Search.getFullTextSession( s ).createFullTextQuery(
+ new TermQuery( new Term( "favoriteColor", "blue" ) )
+ ).list();
+ assertEquals( 2, results.size() );
+ tx.commit();
+ s.close();
}
+
protected Class[] getMappings() {
return new Class[] {
Person.class
Show replies by date