读书人

java.lang.ClassCastException: java.

发布时间: 2013-01-23 10:44:49 作者: rapoo

java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Inte
package card.struts;

import global.hibernate.MyBeanFactory;
import history.hibernate.History;

import java.util.List;
import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import allDao.CardDao;
import allDao.HistoryDao;
import card.hibernate.Card;

import com.opensymphony.xwork2.ActionSupport;

public class ChoiseCardAction extends ActionSupport implements SessionAware{
/**
*
*/
private static final long serialVersionUID = 1L;
private int cardId;
private CardDao cardDao;
private HistoryDao historyDao;
@SuppressWarnings("rawtypes")
private Map session;

@SuppressWarnings("rawtypes")
public Map getSession() {
return session;
}

public void setSession(@SuppressWarnings("rawtypes") Map session) {
this.session = session;
}
public int getCardId() {
return cardId;
}

public void setCardId(int cardId) {
this.cardId = cardId;
}

@SuppressWarnings("unchecked")
public String execute()
{
System.out.println("正在执行choiseCard请求!");
if(this.cardDao==null)
{
this.cardDao=(CardDao)MyBeanFactory.MyGetBean("cardDao");
}
if(this.historyDao==null)
{
this.historyDao=(HistoryDao)MyBeanFactory.MyGetBean("historyDao");
}
Card card=this.cardDao.queryById(this.cardId);
System.out.println("选择的卡号为:"+cardId);
System.out.println("卡里还有的钱:"+card.getBalance());
this.session.put("card",card);
List<History> listOfHistory=this.historyDao.queryByCard(this.cardId);//问题就在这里
System.out.println("此卡共有消费记录条数:"+listOfHistory.size());
this.session.put("listOfHistory", listOfHistory);
return "success";
}
}

下面是控制台的输出:
正在执行choiseCard请求!
选择的卡号为:7951
卡里还有的钱:100.0

问题是listOfHistory=this.historyDao.queryByCard(this.cardId);中如果我把this.cardId改成7951就能运行通过,但是用this.cardId就会报错:

java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer
org.hibernate.type.descriptor.java.IntegerTypeDescriptor.unwrap(IntegerTypeDescriptor.java:36)
org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$1.doBind(IntegerTypeDescriptor.java:57)
org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:92)
org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:305)
org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:300)
org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:57)
org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2602)
org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2983)
org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2918)
org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3247)
org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:140)
org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)
org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:276)
org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)


org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1214)
org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:403)
org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:480)
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
allDao.HistoryDao$$EnhancerByCGLIB$$ca6aaefe.queryByCard(<generated>)
card.struts.ChoiseCardAction.execute(ChoiseCardAction.java:60)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)


org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)


个人感觉好像是bug,求大侠看一下,哪里有问题?
[解决办法]
queryByCard这个方法可否贴出一下。

还有History的实体类贴出来一下。





[解决办法]

引用:
发错地方了。

引用:queryByCard这个方法可否贴出一下。

还有History的实体类贴出来一下。

看出问题没有啊?


刚才工作来的。不好意思

query.setInteger(0, cardId)
改为
query.setParameter(0, cardId);
试试。

history这个类最后也贴出下。
好像cardId对应你的数据库字段的类型为float?


[解决办法]
引用:
引用:queryByCard这个方法可否贴出一下。

还有History的实体类贴出来一下。


用query.setParameter(0,cardId);
也试过了,还是不行。


你正式程序的卡号是多少位有效数字的请问。

可能需要把history的cardid属性换为long型。




[解决办法]

引用:
引用:
引用:引用:queryByCard这个方法可否贴出一下。

还有History的实体类贴出来一下。


用query.setParameter(0,cardId);
也试过了,还是不行。

你正式程序的卡号是多少位有效数字的请问。

可能需要把history的……


java.lang.Float cannot be cast to java.lang.Integer

this.historyDao.queryByCard(this.cardId); LZ的this.cardId是Float 类型的 请转化为Integer类型后 再试试
[解决办法]
问题应该不在后面,在前面,this.cardId这个值是怎么设置的,通过输入吗,看看输入的值是否和cardId对应是int
[解决办法]
<%
List<Card> listOfCard=(List<Card>)session.getAttribute("listOfCard");
for(int i=0;i<listOfCard.size();i++)
{
CardType cardtype=cardTypeDao.queryById(((Card)listOfCard.get(i)).getcId());
int cId=listOfCard.get(i).getCardId();
%><option value=<%=cId %>><%=cardtype.getPrefix() %><%=cId %></option><%
}
%>

换成
<option value="7951">aaaaa</option>
看看,如果不报错,就说明上面那段有问题

读书人网 >J2EE开发

热点推荐