ClassCastException - FullTextHibernateSessionProxy
azalea Jul 8, 2007 4:47 AMHi,
my enviroments:
JBoss AS 4.2.0.GA
Seam 2.0.0.BETA1(CVS)
Seam gen-generated project
When DetachedCriteria#getExecutableCriteria in the following code is invoked,
"java.lang.ClassCastException: org.jboss.seam.persistence.FullTextHibernateSessionProxy" is thrown.
This code worked with Seam1.3.0.ALPHA.
@Name("criteriaTesting")
@Scope(ScopeType.CONVERSATION)
public class CriteriaTestingBean implements Serializable {
@In
private EntityManager entityManager;
private Integer minAge;
private Integer maxAge;
@Out(required=false)
private List<Member> members;
public void setMinAge(Integer minAge) {
this.minAge = minAge;
}
public void setMaxAge(Integer maxAge) {
this.maxAge = maxAge;
}
public void search() {
Session session = (Session) entityManager.getDelegate();
DetachedCriteria crit = DetachedCriteria.forClass(Member.class);
if (minAge != null) {
crit.add( ge("age", minAge) );
}
if (maxAge != null) {
crit.add( le("age", maxAge) );
}
members = crit.getExecutableCriteria(session).list();
}
}
The following: stack trace
[testng] java.lang.ClassCastException: org.jboss.seam.persistence.FullTextHib ernateSessionProxy [testng] at org.hibernate.criterion.DetachedCriteria.getExecutableCriteri a(DetachedCriteria.java:52) [testng] at seam.study.criteria.CriteriaTestingBean.search(CriteriaTestin gBean.java:66) [testng] at org.jboss.seam.util.Reflections.invoke(Reflections.java:21) [testng] at org.jboss.seam.intercept.RootInvocationContext.proceed(RootIn vocationContext.java:31) [testng] at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamIn vocationContext.java:56) [testng] at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(Bijecti onInterceptor.java:46) [testng] at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamIn vocationContext.java:68) [testng] at org.jboss.seam.persistence.ManagedEntityIdentityInterceptor.a roundInvoke(ManagedEntityIdentityInterceptor.java:43) [testng] at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamIn vocationContext.java:68) [testng] at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(R ollbackInterceptor.java:31) [testng] at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamIn vocationContext.java:68) [testng] at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(Met hodContextInterceptor.java:42) [testng] at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamIn vocationContext.java:68) [testng] at org.jboss.seam.intercept.RootInterceptor.invoke(RootIntercept or.java:106) [testng] at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocat ion(JavaBeanInterceptor.java:151) [testng] at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanI nterceptor.java:87) [testng] at seam.study.criteria.CriteriaTestingBean_$$_javassist_2.search (CriteriaTestingBean_$$_javassist_2.java) [testng] at seam.study.test.criteria.CriteriaTest$1.invokeApplication(Cri teriaTest.java:30) [testng] at org.jboss.seam.mock.BaseSeamTest$Request.invokeApplicationPha se(BaseSeamTest.java:604) [testng] at org.jboss.seam.mock.BaseSeamTest$Request.emulateJsfLifecycle( BaseSeamTest.java:556) [testng] at org.jboss.seam.mock.BaseSeamTest$Request.run(BaseSeamTest.jav a:487) [testng] at seam.study.test.criteria.CriteriaTest.testSearch(CriteriaTest .java:18) [testng] ... Removed 26 stack frames
The following(not DetachedCriteria version) works fine with Seam 2.0.0.BETA1.
public void search() {
Session session = (Session) entityManager.getDelegate();
Criteria crit = session.createCriteria(Member.class);
if (minAge != null) {
crit.add( ge("age", minAge) );
}
if (maxAge != null) {
crit.add( le("age", maxAge) );
}
members = crit.list();
}
Do I make a mistake in how to use DetachedCriteria in Seam app?
Thanks in advance.