[
http://jira.jboss.com/jira/browse/JBSEAM-1950?page=comments#action_12378227 ]
Christian Pietsch commented on JBSEAM-1950:
-------------------------------------------
Maybe I'm doing something crazy. I have a huge resultset (>50.000 objects) and I
only want to get 50 objects per page (using criterias maxrows and firstrow). But I also
want to display the correct number of total records (e.g. 145.000).
The overall idea behind my source is the following: Create a DetachedCriteria with all
restrictions and put it in Class ActiveSearchFilter and also set the requested page number
there. Then execute:
1. create a copy of my detachedCriteria (suing above copy method)
2. add a projection to my copied detachedcriteria: setProjection(Projections.rowCount())
- to get the total row count
3. execute the original detachedcriteria in ActiveSearchFilter
So maybe this is not a seam bug but a bug in my code (but this worked fine in
1.3.0Alpha).
Here is the relevant code:
public abstract class AbstractSearch implements PageableSearch {
@In
org.hibernate.Session hibernateSession;
...
public List<Object> retrieveItems(ActiveSearchFilter filter) {
if (!filter.isRowCountAvailable()) {
Criteria c = filter.getCopiedCriteria().getExecutableCriteria(
hibernateSession);
c.setProjection(Projections.rowCount());
List<Object> l = (List<Object>) c.list();
filter.setTotalSearchResults((Integer) l.get(0));
}
Criteria c = filter.getOriginalCriteria().getExecutableCriteria(
hibernateSession);
if (filter.getMaxRows() != null && filter.getMaxRows() > 0)
c.setMaxResults(filter.getMaxRows());
c.setFirstResult(filter.getFirstRow() - 1);
return c.list();
}
}
public class ActiveSearchFilter implements Serializable {
private DetachedCriteria originalCriteria;
private Integer totalSearchResults;
private Integer firstRow;
private Integer maxRows;
...
protected DetachedCriteria copy(DetachedCriteria criteria) {
try {
ByteArrayOutputStream baostream = new ByteArrayOutputStream();
ObjectOutputStream oostream = new ObjectOutputStream(baostream);
oostream.writeObject(criteria);
oostream.flush();
oostream.close();
ByteArrayInputStream baistream = new ByteArrayInputStream(baostream
.toByteArray());
ObjectInputStream oistream = new ObjectInputStream(baistream);
DetachedCriteria copy = (DetachedCriteria) oistream.readObject();
oistream.close();
return copy;
} catch (Throwable t) {
throw new HibernateException(t);
}
}
ClassCastException when using Hibernates DetachedCriteria
---------------------------------------------------------
Key: JBSEAM-1950
URL:
http://jira.jboss.com/jira/browse/JBSEAM-1950
Project: JBoss Seam
Issue Type: Bug
Components: Core
Affects Versions: 2.0.0.CR1, 2.0.0.BETA1
Environment: Jboss 4.2.1
Reporter: Christian Pietsch
Assigned To: Emmanuel Bernard
Priority: Critical
Since migration to Seam 2 (tried Beta 1 and CR1) I cannot list my entities using
Hibernate's DetachedCriteria any longer. Stack trace is:
Caused by: java.lang.ClassCastException: org.hibernate.search.impl.FullTextSessionImpl
at
org.jboss.seam.persistence.HibernateSessionProxy.getDelegateSessionImplementor(HibernateSessionP
roxy.java:401)
at
org.jboss.seam.persistence.HibernateSessionProxy.list(HibernateSessionProxy.java:566)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at de.dvdb.generic.search.AbstractSearch.retrieveItems(AbstractSearch.java:261)
- in general I can access the entityManager in my application
- I don't use Seam's new search capabilities at all (right now)
- I'm getting the Hibernate Session in the following way:
<factory name="hibernateSession" scope="STATELESS"
auto-create="true" value="#{dvdb.delegate}" />
<persistence:managed-persistence-context name="dvdb"
auto-create="true"
persistence-unit-jndi-name="java:/dvdbEntityManagerFactory" />
Adding hibernate-search.jar and dependencies didn't help.
- Chris
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira