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) {
Show replies by date