Author: epbernard
Date: 2007-08-21 14:42:37 -0400 (Tue, 21 Aug 2007)
New Revision: 13946
Modified:
search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
search/trunk/src/test/org/hibernate/search/test/session/MassIndexTest.java
Log:
HSEARCH-109 lazy indexed object use the wrong class name
Modified: search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java 2007-08-21
18:01:54 UTC (rev 13945)
+++ search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java 2007-08-21
18:42:37 UTC (rev 13946)
@@ -504,7 +504,7 @@
public Document getDocument(T instance, Serializable id) {
Document doc = new Document();
- XClass instanceClass = reflectionManager.toXClass( instance.getClass() );
+ XClass instanceClass = reflectionManager.toXClass( Hibernate.getClass( instance ) );
if ( rootPropertiesMetadata.boost != null ) {
doc.setBoost( rootPropertiesMetadata.boost );
}
@@ -590,6 +590,7 @@
private Object unproxy(Object value) {
//FIXME this service should be part of Core?
if ( value instanceof HibernateProxy ) {
+ // .getImplementation() initializes the data by side effect
value = ( (HibernateProxy) value ).getHibernateLazyInitializer()
.getImplementation();
}
Modified: search/trunk/src/test/org/hibernate/search/test/session/MassIndexTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/session/MassIndexTest.java 2007-08-21
18:01:54 UTC (rev 13945)
+++ search/trunk/src/test/org/hibernate/search/test/session/MassIndexTest.java 2007-08-21
18:42:37 UTC (rev 13946)
@@ -2,6 +2,7 @@
package org.hibernate.search.test.session;
import java.util.List;
+import java.util.Iterator;
import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.index.Term;
@@ -150,6 +151,22 @@
luceneQuery = new TermQuery( new Term( "categorie.nom", "livre" )
);
result = session.createFullTextQuery( luceneQuery, Entite.class ).list();
assertEquals( "test lazy loading and indexing", 1, result.size() );
+ s.close();
+
+ s = openSession();
+ Iterator it = s.createQuery( "from Entite where id = :id").setParameter(
"id", ent.getId() ).iterate();
+ session = Search.createFullTextSession( s );
+ while ( it.hasNext() ) {
+ ent = (Entite) it.next();
+ session.index( ent );
+ }
+ s.close();
+
+ s = openSession();
+ session = Search.createFullTextSession( s );
+ luceneQuery = new TermQuery( new Term( "categorie.nom", "livre" )
);
+ result = session.createFullTextQuery( luceneQuery, Entite.class ).list();
+ assertEquals( "test lazy loading and indexing", 1, result.size() );
ent = (Entite) result.get( 0 );
cat = ent.getCategorie();
ent.setCategorie( null );
Show replies by date