一天没解决了 Hibernate问题 ClassCastException
左连接查询,在hbm.xml中有两个joined-subclass,哪个joined-subclass的类在后面,就报这个类的ClassCastException,例如本来在hbm.xml中1.java在前,2.java在后,就报1.java的ClassCastException;修改hbml.xml把2.java放在前面,1.java在后,这样报2.java的ClassCastException。
下面是代码
Newtracking.hbm.xml
Newtracking.java
NewStatus.java
NewVendorDeliverTime
Impl文件
下面是代码
Newtracking.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 - Hibernate Tools
-->
<hibernate-mapping>
<class name="Bei.Google.PM.XML.vo.Newtracking" table="newtracking" schema="SCOTT">
<id name="jobid" type="java.lang.String">
<column name="JOBID" length="16" />
<generator class="assigned">
</generator>
</id>
<property name="csvendor" type="java.lang.String" >
<column name="CSVENDOR" length="32" not-null="false" />
</property>
<property name="ctvendor" type="java.lang.String">
<column name="CTVENDOR" length="32" not-null="false" />
</property>
<property name="newhodate" type="java.lang.String">
<column name="NEWHODATE" length="32" not-null="true" />
</property>
<property name="newhbdate" type="java.lang.String">
<column name="NEWHBDATE" length="32" not-null="true" />
</property>
<property name="wordcount" type="java.lang.String">
<column name="WORDCOUNT" length="32" not-null="true" />
</property>
<joined-subclass name="Bei.Google.PM.XML.vo.NewStatus" table="newstatus">
<key column ="JOBID"/>
<property name="jobstatus" type="java.lang.String" column="jobstatus"></property>
<property name="csstatus" type="java.lang.String" column="csstatus"></property>
<property name="ctstatus" type="java.lang.String" column="ctstatus"></property>
</joined-subclass>
<joined-subclass name="Bei.Google.PM.XML.vo.NewVendorDeliverTime" table="newvendordelivertime">
<key column ="JOBID"/>
<property name="cntime" type="java.lang.String" column="cntime"></property>
<property name="cttime" type="java.lang.String" column="cttime"></property>
</joined-subclass>
</class>
</hibernate-mapping>
Newtracking.java
package Bei.Google.PM.XML.vo;
public class Newtracking
private String jobid;
private String csvendor;
private String ctvendor;
private String newhodate;
private String newhbdate;
private String wordcount;
public String getCsvendor() {
return csvendor;
}
public void setCsvendor(String csvendor) {
this.csvendor = csvendor;
}
public String getCtvendor() {
return ctvendor;
}
public void setCtvendor(String ctvendor) {
this.ctvendor = ctvendor;
}
public String getJobid() {
return jobid;
}
public void setJobid(String jobid) {
this.jobid = jobid;
}
public String getNewhbdate() {
return newhbdate;
}
public void setNewhbdate(String newhbdate) {
this.newhbdate = newhbdate;
}
public String getNewhodate() {
return newhodate;
}
public void setNewhodate(String newhodate) {
this.newhodate = newhodate;
}
public String getWordcount() {
return wordcount;
}
public void setWordcount(String wordcount) {
this.wordcount = wordcount;
}
}
NewStatus.java
package Bei.Google.PM.XML.vo;
public class NewStatus extends Newtracking {
private String jobstatus ;
private String csstatus ;
private String ctstatus ;
public String getJobstatus() {
return jobstatus;
}
public void setJobstatus(String jobstatus) {
this.jobstatus = jobstatus;
}
public String getCsstatus() {
return csstatus;
}
public void setCsstatus(String csstatus) {
this.csstatus = csstatus;
}
public String getCtstatus() {
return ctstatus;
}
public void setCtstatus(String ctstatus) {
this.ctstatus = ctstatus;
}
}NewVendorDeliverTime
package Bei.Google.PM.XML.vo;
public class NewVendorDeliverTime extends Newtracking {
private String cntime ;
private String cttime ;
public String getCntime() {
return cntime;
}
public void setCntime(String cntime) {
this.cntime = cntime;
}
public String getCttime() {
return cttime;
}
public void setCttime(String cttime) {
this.cttime = cttime;
}
}
Impl文件
package Bei.Google.PM.NewSearch.impl;
import java.util.*;
import org.hibernate.Query;
import org.hibernate.Session;
import Bei.Google.PM.NewSearch.vo.NewinfoSearchDTO;
import Bei.Google.PM.XML.vo.NewStatus;
import Bei.Google.PM.XML.vo.NewVendorDeliverTime;
import Bei.Google.PM.XML.vo.Newtracking;
public class NewInfoSearchimpl implements NewSearchDAO {
private Session session;
public NewInfoSearchimpl() {
this.session = SessionFactory.getSession();
}
public boolean isSearch(NewinfoSearchDTO newinfosearchdto) throws Exception {
boolean flag = false;
Newtracking nt = null;
String hql = "FROM Newtracking as t where t.jobid=?";
Query q = session.createQuery(hql);
q.setString(0, newinfosearchdto.getJobid());
Iterator iter = q.list().iterator();
if (iter.hasNext()) {
nt = (Newtracking) iter.next();
flag = true;
NewStatus ns = (NewStatus) nt;
NewVendorDeliverTime nvdt = (NewVendorDeliverTime) nt;
String lc = newinfosearchdto.getLanguagecode();
if ("zh-CN".equals(lc)) {
newinfosearchdto.setStatus(ns.getCsstatus());
newinfosearchdto.setVendor(nt.getCsvendor());
newinfosearchdto.setVendorhbd(nvdt.getCntime());
newinfosearchdto.setWordcount(nt.getWordcount());
} else if ("zh-TW".equals(lc)) {
newinfosearchdto.setStatus(ns.getCtstatus());
newinfosearchdto.setVendor(nt.getCtvendor());
newinfosearchdto.setVendorhbd(nvdt.getCttime());
newinfosearchdto.setWordcount(nt.getWordcount());
}
}
return flag;
}
}
...全文
相关推荐
weblogic解决clob添加失败 classcastexception
通过以上步骤,一般可以定位并解决WebLogic中CLOB添加失败导致的ClassCastException。在实际工作中,遇到这类问题时,保持耐心,细致地分析日志和代码,通常能找到解决问题的关键。
hibernate测试时遇到的几个异常及解决方法汇总
这个异常可能是由于 Hibernate 版本不兼容引起的,删除该 jar 文件可以解决这个问题。
Hibernate几个常见错误解决方式
在开发过程中,利用Hibernate的错误信息进行调试,可以快速定位问题所在。如果遇到问题,可以参考Hibernate的官方文档或在线社区寻求帮助。
java.lang.ClassCastException
**Ebean**:Ebean是一个ORM(Object-Relational Mapping)库,类似于Hibernate,用于简化Java应用程序中的数据库操作。
hibernate,struts,spring 常见错误信息
这三种技术在实际使用过程中可能会遇到各种错误,了解并解决这些错误对于开发者来说至关重要。一、Hibernate错误Hibernate是Java持久层框架,它简化了数据库操作。常见的错误包括:1.


