hibernate保存数据时报java.lang.ClassCastException

messi2008 2008-01-12 02:40:53
使用的Spring+Hibernate
在进行数据保存的时候 报java.lang.ClassCastException
Caused by: java.lang.ClassCastException: java.lang.Long
at com.workflow.model.hibernateDaoImpl.HpmQshjbxxbDaoImpl.saveHpmQshjbxxb(HpmQshjbxxbDaoImpl.java:32)
at com.workflow.model.service.impl.HpmQshjbxxbServiceImpl.saveHpmQshjbxxb(HpmQshjbxxbServiceImpl.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy52.saveHpmQshjbxxb(Unknown Source)
at com.workflow.jbpm.bean.TaskBean.saveBasicInfo(TaskBean.java:127)
at com.workflow.jbpm.bean.TaskBean.saveAllInfo(TaskBean.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
... 36 more

相关的代码如下 日志错误的JAVA:32 就是以下打*的这行
public HpmQshjbxxb saveHpmQshjbxxb(HpmQshjbxxb hpmQshjbxxb) {
this.logger.info(hpmQshjbxxb.getProcessinstanceId());
try {
//hpmQshjbxxb是从前台传过来的,确保非空。
return (HpmQshjbxxb) this.getHibernateTemplate().save(hpmQshjbxxb);***********

} catch (HibernateException e) {
e.printStackTrace();
throw e;
}
}


VO的配置 以下是VO的 hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping >
<class name="com.workflow.model.vo.HpmQshjbxxb" table="HPM_QSHJBXXB" schema="JBPM_TEST">
<id name="qshtybh" column="QSHTYBH" type="java.lang.Long" >
<generator class="native" />
</id>
<property name="qshmc" type="java.lang.String">
<column name="QSHMC" length="30" />
</property>
<property name="fddbr" type="java.lang.String">
<column name="FDDBR" length="30" />
</property>
<property name="fddbrzw" type="java.lang.String">
<column name="FDDBRZW" length="30" />
</property>
<property name="dwxz" type="java.lang.String">
<column name="DWXZ" length="30" />
</property>
<property name="hylb" type="java.lang.String">
<column name="HYLB" length="30" />
</property>
<property name="txdz" type="java.lang.String">
<column name="TXDZ" length="30" />
</property>
<property name="yzbm" type="java.lang.String">
<column name="YZBM" length="30" />
</property>
<property name="processinstanceId" type="java.lang.Long">
<column name="PROCESSINSTANCE_ID" not-null="true" />
</property>
</class>
</hibernate-mapping>

以下是VO的POJO
package com.workflow.model.vo;

import java.io.Serializable;

/**
* HpmQshjbxxb generated by MyEclipse Persistence Tools
*/

public class HpmQshjbxxb implements Serializable{

// Fields
private static final long serialVersionUID = 1L;
private long qshtybh=0;

private String qshmc;

private String fddbr;

private String fddbrzw;

private String dwxz;

private String hylb;

private String txdz;

private String yzbm;

private long processinstanceId;

// private Set hpmQsxksqxxbs = new HashSet(0);

// Constructors

/** default constructor */
public HpmQshjbxxb() {
}

/** minimal constructor */
public HpmQshjbxxb(long qshtybh, long processinstanceId) {
this.qshtybh = qshtybh;
this.processinstanceId = processinstanceId;
}

/** full constructor */
public HpmQshjbxxb(long qshtybh, String qshmc, String fddbr,
String fddbrzw, String dwxz, String hylb, String txdz, String yzbm,
long processinstanceId) {
this.qshtybh = qshtybh;
this.qshmc = qshmc;
this.fddbr = fddbr;
this.fddbrzw = fddbrzw;
this.dwxz = dwxz;
this.hylb = hylb;
this.txdz = txdz;
this.yzbm = yzbm;
this.processinstanceId = processinstanceId;
// this.hpmQsxksqxxbs = hpmQsxksqxxbs;
}

// Property accessors

public long getQshtybh() {
return this.qshtybh;
}

public void setQshtybh(long qshtybh) {
this.qshtybh = qshtybh;
}

public String getQshmc() {
return this.qshmc;
}

public void setQshmc(String qshmc) {
this.qshmc = qshmc;
}

public String getFddbr() {
return this.fddbr;
}

public void setFddbr(String fddbr) {
this.fddbr = fddbr;
}

public String getFddbrzw() {
return this.fddbrzw;
}

public void setFddbrzw(String fddbrzw) {
this.fddbrzw = fddbrzw;
}

public String getDwxz() {
return this.dwxz;
}

public void setDwxz(String dwxz) {
this.dwxz = dwxz;
}

public String getHylb() {
return this.hylb;
}

public void setHylb(String hylb) {
this.hylb = hylb;
}

public String getTxdz() {
return this.txdz;
}

public void setTxdz(String txdz) {
this.txdz = txdz;
}

public String getYzbm() {
return this.yzbm;
}

public void setYzbm(String yzbm) {
this.yzbm = yzbm;
}

public long getProcessinstanceId() {
return this.processinstanceId;
}

public void setProcessinstanceId(long processinstanceId) {
this.processinstanceId = processinstanceId;
}
}
...全文
839 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bb_JavaLover 2010-11-25
  • 打赏
  • 举报
回复
呵呵,观摩观摩
xiaocai607 2010-03-04
  • 打赏
  • 举报
回复
我也来看看,呵呵呵哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
w770184167 2009-09-21
  • 打赏
  • 举报
回复
Zx
figo1865 2009-08-18
  • 打赏
  • 举报
回复
看正解
billwindows 2008-01-14
  • 打赏
  • 举报
回复
这种 问题 建议你 以后 直接 用 debug 跟 一下 , 一看就看出问题的 . 比如 : 看看 对象 里面 装的是什么 , 你用什么 来 造型
messi2008 2008-01-14
  • 打赏
  • 举报
回复
9楼的是正解 谢谢各位了
是我疏忽了 一直以为是数据格式的问题
Java_1987 2008-01-13
  • 打赏
  • 举报
回复
当然会抱错,save方法 有返回值吗?
你 转 就异常
老紫竹 2008-01-13
  • 打赏
  • 举报
回复
private       long       processinstanceId;  

此处是 long

改成

private Long processinstanceId;   
dgqbcht 2008-01-12
  • 打赏
  • 举报
回复
你POJO里对应的processinstanceId也应该是Long,long是基本类型,Long是封装了long的对象,这两个做转换的时候会出错。
hahe7788 2008-01-12
  • 打赏
  • 举报
回复
按有几个群,你不妨加进去,可以和大家一起讨论啊.........46986340,28039577,4804620
在那里看看有无能回答你的,谢谢,LZ,甭忘了给俺分哦,谢谢LZ
hahe7788 2008-01-12
  • 打赏
  • 举报
回复
按有几个群,你不妨加进去,可以和大家一起讨论啊.........46986340,28039577,4804620
在那里看看有无能回答你的,谢谢,LZ,甭忘了给俺分哦,谢谢LZ
messi2008 2008-01-12
  • 打赏
  • 举报
回复
我的版本是Hibernate-Version: 3.1.3
JDK 是 JAVA5 的
type="java.lang.Long" 我这个是myEclipse自动生成的阿
YOYOOOP 2008-01-12
  • 打赏
  • 举报
回复
你的hibernate是3.x versions的吗?
有可能是这个造成的。在3.x以前是Integer,3.x以后是Long型

IT资源网_Java/J2EE技术教程
老紫竹 2008-01-12
  • 打赏
  • 举报
回复
<property name="processinstanceId" type="java.lang.Long">
此处是 Long


private long processinstanceId;
此处是 long

不一样的,你是不是用的JDK 1.4 啊!换JDK5.0看看

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧