[hibernate-commits] Hibernate SVN: r12791 - trunk/HibernateExt/search/src/java/org/hibernate/search/engine.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Jul 20 19:57:34 EDT 2007


Author: epbernard
Date: 2007-07-20 19:57:34 -0400 (Fri, 20 Jul 2007)
New Revision: 12791

Modified:
   trunk/HibernateExt/search/src/java/org/hibernate/search/engine/ObjectLoader.java
   trunk/HibernateExt/search/src/java/org/hibernate/search/engine/QueryLoader.java
Log:
HSEARCH-99 be sure every object returned is initialized.

Modified: trunk/HibernateExt/search/src/java/org/hibernate/search/engine/ObjectLoader.java
===================================================================
--- trunk/HibernateExt/search/src/java/org/hibernate/search/engine/ObjectLoader.java	2007-07-20 23:51:23 UTC (rev 12790)
+++ trunk/HibernateExt/search/src/java/org/hibernate/search/engine/ObjectLoader.java	2007-07-20 23:57:34 UTC (rev 12791)
@@ -23,7 +23,17 @@
 	}
 
 	public Object load(EntityInfo entityInfo) {
-		return session.get( entityInfo.clazz, entityInfo.id );
+		//be sure to get an initialized object
+		Object maybeProxy = session.get( entityInfo.clazz, entityInfo.id );
+		try {
+			Hibernate.initialize( maybeProxy );
+		}
+		catch (ObjectNotFoundException e) {
+			log.debug( "Object found in Search index but not in database: "
+					+ e.getEntityName() + " wih id " + e.getIdentifier() );
+			maybeProxy = null;
+		}
+		return maybeProxy;
 	}
 
 	public List load(EntityInfo... entityInfos) {

Modified: trunk/HibernateExt/search/src/java/org/hibernate/search/engine/QueryLoader.java
===================================================================
--- trunk/HibernateExt/search/src/java/org/hibernate/search/engine/QueryLoader.java	2007-07-20 23:51:23 UTC (rev 12790)
+++ trunk/HibernateExt/search/src/java/org/hibernate/search/engine/QueryLoader.java	2007-07-20 23:57:34 UTC (rev 12791)
@@ -7,10 +7,13 @@
 import org.hibernate.Criteria;
 import org.hibernate.Session;
 import org.hibernate.Hibernate;
+import org.hibernate.ObjectNotFoundException;
 import org.hibernate.annotations.common.AssertionFailure;
 import org.hibernate.criterion.Disjunction;
 import org.hibernate.criterion.Restrictions;
 import org.hibernate.search.engine.EntityInfo;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * @author Emmanuel Bernard
@@ -18,6 +21,7 @@
 public class QueryLoader implements Loader {
 	private static final int MAX_IN_CLAUSE = 500;
 	private static final List EMPTY_LIST = new ArrayList(0);
+	private static Log log  = LogFactory.getLog( QueryLoader.class );
 
 	private Session session;
 	private Class entityType;
@@ -36,7 +40,17 @@
 
 
 	public Object load(EntityInfo entityInfo) {
-		return session.get( entityInfo.clazz, entityInfo.id );
+		//be sure to get an initialized object
+		Object maybeProxy = session.get( entityInfo.clazz, entityInfo.id );
+		try {
+			Hibernate.initialize( maybeProxy );
+		}
+		catch (ObjectNotFoundException e) {
+			log.debug( "Object found in Search index but not in database: "
+					+ e.getEntityName() + " wih id " + e.getIdentifier() );
+			maybeProxy = null;
+		}
+		return maybeProxy;
 	}
 
 	public List load(EntityInfo... entityInfos) {




More information about the hibernate-commits mailing list