|
(下面这个是Forum.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="org.linyubin.vo.Forum" table="forum">
<id name="forumId" type="java.lang.Integer">
<column name="forumId" />
<generator class="increment" />
</id>
<property name="forumName" type="java.lang.String">
<column name="forumName" length="20" not-null="true" />
</property>
<property name="date" type="java.util.Date">
<column name="date" length="10" not-null="true" />
</property>
<set name="topics" inverse="true">
<key><column name="forumId"></column></key>
<one-to-many class="org.linyubin.vo.Topic"/>
</set>
</class>
</hibernate-mapping>
说明:Forum这个类是 论坛类,相当于我们这里 的J2EE原创讨论区,Topic是 话题类,比如我发表的这个就属于一个话题
(下面这个是ActionForm)
package org.linyubin.vo;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import org.apache.struts.action.ActionForm;
/**
* Forum generated by MyEclipse - Hibernate Tools
*/
public class Forum extends ActionForm implements java.io.Serializable {
// Fields
private Integer forumId;
private User user;
private String forumName;
private Date date;
private String year;
private String month;
private String day;
private HashSet topics=new HashSet(0);
// Constructors
/** default constructor */
public Forum() {
}
/** minimal constructor */
public Forum(String forumName, Date date) {
this.forumName = forumName;
this.date = date;
}
/** full constructor */
public Forum(User user, String forumName, Date date) {
this.user = user;
this.forumName = forumName;
this.date = date;
}
// Property accessors
public Integer getForumId() {
return this.forumId;
}
public void setForumId(Integer forumId) {
this.forumId = forumId;
}
public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user = user;
}
public String getForumName() {
return this.forumName;
}
public void setForumName(String forumName) {
this.forumName = forumName;
}
public Date getDate() {
SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos=new ParsePosition(0);
return formatter.parse(this.year+"-"+this.month+"-"+this.day, pos);
}
public void setDate(Date date) {
this.date = date;
}
public HashSet getTopics() {
return topics;
}
public void setTopics(HashSet topics) {
this.topics = topics ; //应该 是 在setTopics时候出错,要怎么办?
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
}
(下面这个是Action,其path是 /forum)
package org.linyubin.struts.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.linyubin.dao.ForumDAO;
import org.linyubin.vo.Forum;
public class ForumAction extends DispatchAction {
private ForumDAO forumDao;
public ActionForward insertForum(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
Forum forumForm = (Forum) form
forumDao.save(forumForm);
List forums=forumDao.findForums();
request.setAttribute("forums", forums);
return mapping.findForward("showForums");
}
}
(下面这个是Jsp)
<body>
<center>
<table>
<html:form action="/forum.do?method=insertForum">
<tr>
<td>论坛名:</td><td><html:text property="forumName"/></td>
</tr>
<tr>
<td>创建者:</td>
<td><bean:write name="user" property="userName"/></td>
</tr>
<tr>
<td>日期:</td>
<td>
<html:text property="year"/>年<html:text property="month"/>月<html:text property="day"/>日
</td>
</tr>
<tr>
<td colspan="2" align="center">
<html:submit value="新增"></html:submit>
</td>
</tr>
</html:form>
</table>
</center>
</body>
在插入 时候 报告错误如下:
严重: Servlet.service() for servlet action threw exception
java.lang.ClassCastException: org.hibernate.collection.PersistentSet cannot be cast to java.util.HashSet
at com.linyubin.vo.Forum$$BulkBeanByCGLIB$$6a279a71.setPropertyValues(<generated>)
at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:200)
at org.hibernate.tuple.PojoTuplizer.setPropertyValues(PojoTuplizer.java:173)
at org.hibernate.persister.entity.BasicEntityPersister.setPropertyValues(BasicEntityPersister.java:2919)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:225)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:160)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:481)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:476)
at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:617)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366)
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:614)
at org.linyubin.dao.ForumDAO.save(ForumDAO.java:34)
at com.linyubin.struts.action.ForumAction.insertForum(ForumAction.java:57)
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:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.linyubin.filter.Chinese.doFilter(Chinese.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:818)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:624)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)
[ 本帖最后由 lovejava 于 2007-4-19 17:35 编辑 ] |
|