Java 分离的条件引发ClassCastException异常

Java 分离的条件引发ClassCastException异常,java,hibernate,Java,Hibernate,我尝试使用hibernate编写以下子查询: I Junction prototype = Restrictions.conjunction(); DetachedCriteria detachedCriteria = DetachedCriteria.forClass(RecipientRecipientGroup.class); detachedCriteria.setProjection(Property.forName("recipientId")); prototype.add(Pro

我尝试使用hibernate编写以下子查询:

I

Junction prototype = Restrictions.conjunction();
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(RecipientRecipientGroup.class);
detachedCriteria.setProjection(Property.forName("recipientId"));
prototype.add(Property.forName("id").in(detachedCriteria));
Junction prototype = Restrictions.conjunction();
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(RecipientRecipientGroup.class);
detachedCriteria.setProjection(Projections.property(getPlayerIdFieldName()));
prototype.add(Subqueries.in("id", detachedCriteria));

II

Junction prototype = Restrictions.conjunction();
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(RecipientRecipientGroup.class);
detachedCriteria.setProjection(Property.forName("recipientId"));
prototype.add(Property.forName("id").in(detachedCriteria));
Junction prototype = Restrictions.conjunction();
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(RecipientRecipientGroup.class);
detachedCriteria.setProjection(Projections.property(getPlayerIdFieldName()));
prototype.add(Subqueries.in("id", detachedCriteria));
我的映射:

@Entity
@Table(name="mailing.recipient_recipient_group")
public class RecipientRecipientGroup {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name="recipient_group_id")
    private int recipientGroupId;

    @Column(name="recipient_id")
    private int recipientId;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getRecipientGroupId() {
        return recipientGroupId;
    }

    public void setRecipientGroupId(int recipientGroupId) {
        this.recipientGroupId = recipientGroupId;
    }

    public int getRecipientId() {
        return recipientId;
    }

    public void setRecipientId(int recipientId) {
        this.recipientId = recipientId;
    }

}
第一个示例运行良好,但第二个示例引发以下异常:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at org.hibernate.type.IntegerType.set(IntegerType.java:41)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:83)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:65)
    at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1698)
    at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1669)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1554)
    at org.hibernate.loader.Loader.doQuery(Loader.java:661)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
    at org.hibernate.loader.Loader.doList(Loader.java:2211)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
    at org.hibernate.loader.Loader.list(Loader.java:2090)
    at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:95)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
    at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
    at ua.com.winforce.online.admin.db.dao.PlayerDaoImpl.getRecipientCount(PlayerDaoImpl.java:358)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at com.sun.proxy.$Proxy73.getRecipientCount(Unknown Source)
    at ua.com.winforce.online.admin.db.service.PlayerServiceImpl.getRecipientsCount(PlayerServiceImpl.java:352)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
    at com.sun.proxy.$Proxy94.getRecipientsCount(Unknown Source)
    at ua.com.winforce.casino.email.controller.MailingRecipientDynamicGroupListController.getDataList(MailingRecipientDynamicGroupListController.java:46)
    at ua.com.winforce.casino.utils.controller.TableController$TableList.get(TableController.java:143)
    at javax.faces.model.ListDataModel.getRowData(ListDataModel.java:151)
    at javax.faces.model.ListDataModel.setRowIndex(ListDataModel.java:185)
    at javax.faces.model.ListDataModel.setWrappedData(ListDataModel.java:219)
    at javax.faces.model.ListDataModel.<init>(ListDataModel.java:78)
    at org.richfaces.component.UISequence.createFacesModel(UISequence.java:91)
    at org.richfaces.component.UISequence.createExtendedDataModel(UISequence.java:118)
    at org.richfaces.component.UIDataTableBase.createExtendedDataModel(UIDataTableBase.java:211)
    at org.richfaces.component.UIDataAdaptor.getExtendedDataModel(UIDataAdaptor.java:466)
    at org.richfaces.component.UIDataAdaptor.getRowCount(UIDataAdaptor.java:517)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at javax.faces.component.UIComponentBase$AttributesMap.get(UIComponentBase.java:2344)
    at org.richfaces.DataScrollerUtils.eval(DataScrollerUtils.java:86)
    at org.richfaces.DataScrollerUtils.getRowCount(DataScrollerUtils.java:81)
    at org.richfaces.event.DataTablePreRenderListener.processEvent(DataTablePreRenderListener.java:122)
    at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
    at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2166)
    at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2139)
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:303)
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247)
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:814)
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302)
    at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
    at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1778)
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1778)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1781)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1781)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:452)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at ua.com.winforce.online.admin.http.filter.ReInitJSFSessionManagedBeanFilter.doFilter(ReInitJSFSessionManagedBeanFilter.java:44)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
    at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
    at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
java.lang.ClassCastException:java.lang.String不能转换为java.lang.Integer
位于org.hibernate.type.IntegerType.set(IntegerType.java:41)
位于org.hibernate.type.NullableType.nullablesafeset(NullableType.java:83)
位于org.hibernate.type.NullableType.nullablesafeset(NullableType.java:65)
位于org.hibernate.loader.loader.bindpositionparameters(loader.java:1698)
位于org.hibernate.loader.loader.bindParameterValues(loader.java:1669)
位于org.hibernate.loader.loader.prepareQueryStatement(loader.java:1554)
位于org.hibernate.loader.loader.doQuery(loader.java:661)
在org.hibernate.loader.loader.doQueryAndInitializeNonLazyCollections(loader.java:224)上
位于org.hibernate.loader.loader.doList(loader.java:2211)
位于org.hibernate.loader.loader.listIgnoreQueryCache(loader.java:2095)
位于org.hibernate.loader.loader.list(loader.java:2090)
位于org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:95)
位于org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
位于org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
位于org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
在ua.com.winforce.online.admin.db.dao.PlayerDaoImpl.getRecipientCount(PlayerDaoImpl.java:358)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:149)
位于org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:171)
位于org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
位于com.sun.proxy.$Proxy73.getRecipientCount(未知源)
在ua.com.winforce.online.admin.db.service.PlayerServiceImpl.getRecipientScont(PlayerServiceImpl.java:352)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
位于org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
位于com.sun.proxy.$Proxy94.getRecipientsCount(未知源)
位于ua.com.winforce.casino.email.controller.MailingRecipientDynamicGroupListController.getDataList(MailingRecipientDynamicGroupListController.java:46)
在ua.com.winforce.casino.utils.controller.TableController$TableList.get(TableController.java:143)
位于javax.faces.model.ListDataModel.getRowData(ListDataModel.java:151)
位于javax.faces.model.ListDataModel.setRowIndex(ListDataModel.java:185)
位于javax.faces.model.ListDataModel.setWrappedData(ListDataModel.java:219)
位于javax.faces.model.ListDataModel。(ListDataModel.java:78)
位于org.richfaces.component.UISequence.createFacesModel(UISequence.java:91)
位于org.richfaces.component.UISequence.createExtendedDataModel(UISequence.java:118)
位于org.richfaces.component.UIDataTableBase.createExtendedDataModel(UIDataTableBase.java:211)
位于org.richfaces.component.UIDataAdapter.getExtendedDataModel(UIDataAdapter.java:466)
位于org.richfaces.component.uidataadapter.getRowCount(uidataadapter.java:517)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于javax.faces.component.UIComponentBase$AttributeMap.get(UIComponentBase.java:2344)
位于org.richfaces.DataScrollerUtils.eval(DataScrollerUtils.java:86)
位于org.richfaces.DataScrollerUtils.getRowCount(DataScrollerUtils.java:81)
位于org.richfaces.event.DataTablePreRenderListener.processEvent(DataTablePreRenderListener.java:122)
位于javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
位于com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2166)
位于com.sun.faces.application.ApplicationImpl.invokeListenerFor(ApplicationImpl.java:2139)
在com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:303)上
在com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247)上
位于javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:814)
位于com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302)
位于com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
位于com.sun.faces.renderkit.html_basic.GridRenderer.encodechildrender(GridRenderer.java:129)
位于javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
位于javax.faces.component.UIComponent.encodeAll(UIComponent.java:1778)
位于javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
位于javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
在