Author: hardy.ferentschik
Date: 2009-04-29 11:03:16 -0400 (Wed, 29 Apr 2009)
New Revision: 16477
Modified:
search/branches/Branch_3_1/src/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
search/branches/Branch_3_1/src/test/org/hibernate/search/test/id/EmbeddedIdTest.java
Log:
backported HSEARCH-306, HSEARCH-248
Modified:
search/branches/Branch_3_1/src/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
===================================================================
---
search/branches/Branch_3_1/src/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java 2009-04-29
15:02:11 UTC (rev 16476)
+++
search/branches/Branch_3_1/src/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java 2009-04-29
15:03:16 UTC (rev 16477)
@@ -148,9 +148,7 @@
//if composite id, use of (a, b) in ((1,2)TwoWayString2FieldBridgeAdaptor, (3,4)) fails
on most database
//a TwoWayString2FieldBridgeAdaptor is never a composite id
- safeFromTupleId = entityState != EntityState.INDEXED ||
TwoWayString2FieldBridgeAdaptor.class.isAssignableFrom(
- idBridge.getClass()
- );
+ safeFromTupleId = TwoWayString2FieldBridgeAdaptor.class.isAssignableFrom(
idBridge.getClass() );
checkAllowFieldSelection();
if ( log.isDebugEnabled() ) {
Modified:
search/branches/Branch_3_1/src/test/org/hibernate/search/test/id/EmbeddedIdTest.java
===================================================================
---
search/branches/Branch_3_1/src/test/org/hibernate/search/test/id/EmbeddedIdTest.java 2009-04-29
15:02:11 UTC (rev 16476)
+++
search/branches/Branch_3_1/src/test/org/hibernate/search/test/id/EmbeddedIdTest.java 2009-04-29
15:03:16 UTC (rev 16477)
@@ -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