小弟初学,不是很懂,按理论设置了,删除问题,主类Question,从类Answer,如果从类中没有相应的Question的主题时,那么
下面的这个方法是可行的,public void deleteQuestion(int qid) throws Exception {
String hql = "delete from Question where qid=?";
Query q = super.getSession().createQuery(hql);
q.setInteger(0, qid);
q.executeUpdate();
}如果从类中有相应的Question的主题时,上面的方法我知道不行的,于是进行了以下设置,
public void deleteQuestion(int qid) throws Exception {
Session session = super.getSession();
Question q =(Question)session.load(Question.class, qid);
session.delete(q);

}在这种方法下,不论是什么情况下都没有响应了,请看相关设置
>>>>>>>>>>>>>>>>>>>Question.javapackage org.nomic.moonforest.vo;import java.util.Date;
import java.util.HashSet;
import java.util.Set;public class Question {
private int qid;
private int itemid;
private int subid;
private String title;
.....
private Sub sub;
private Item item;
private Set answers = new HashSet(0);
public int getQid() {
return qid;
}
public void setQid(int qid) {
this.qid = qid;
}
public int getItemid() {
return itemid;
}
public void setItemid(int itemid) {
this.itemid = itemid;
}
public int getSubid() {
return subid;
}
public void setSubid(int subid) {
this.subid = subid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
....
public Sub getSub() {
return sub;
}
public void setSub(Sub sub) {
this.sub = sub;
}
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
public Set getAnswers() {
return answers;
}
public void setAnswers(Set answers) {
this.answers = answers;
}
}
>>>>>>>>>>>>>>>>>Answer.java
package org.nomic.moonforest.vo;import java.util.Date;public class Answer {
private int ansid;
private int qid;
......
private Question question;
public int getAnsid() {
return ansid;
}
public void setAnsid(int ansid) {
this.ansid = ansid;
}
public int getQid() {
return qid;
}
public void setQid(int qid) {
this.qid = qid;
}
.....
}
public Question getQuestion() {
return question;
}
public void setQuestion(Question question) {
this.question = question;
}
}>>>>>>>>>>>>>>>>>>>>Question.hbm.xml
<hibernate-mapping>
<class name="org.nomic.moonforest.vo.Question" table="question">
<id name="qid" type="java.lang.Integer">
<column name="qid" />
<generator class="native" />
</id>
<many-to-one name="sub" class="org.nomic.moonforest.vo.Sub"
fetch="select">
<column name="subid" />
</many-to-one>
<many-to-one name="item" class="org.nomic.moonforest.vo.Item"
fetch="select">
<column name="itemid" />
</many-to-one>
<property name="title" type="java.lang.String">
<column name="title" length="100" not-null="true" />
</property>
.....
<property name="questiontime" type="java.util.Date">
<column name="questiontime" length="0" not-null="true" />
</property>
<set name="answers" inverse="true" lazy="true" cascade="all">
<key>
<column name="qid" />
</key>
<one-to-many class="org.nomic.moonforest.vo.Answer" />
</set>
</class>
</hibernate-mapping>>>>>>>>>>>>>>>>>>>Answer.hbm.xml<hibernate-mapping>
    <class name="org.nomic.moonforest.vo.Answer" table="answer" >
        <id name="ansid" type="java.lang.Integer">
            <column name="ansid" />
            <generator class="native" />
        </id>
        <many-to-one name="question" class="org.nomic.moonforest.vo.Question" fetch="select"
         >
            <column name="qid" />
        </many-to-one>
        <property name="quesans" type="java.lang.String">
            <column name="quesans" length="65535" not-null="true" />
        </property>
        <property name="grade" type="java.lang.String">
            <column name="grade" length="20" />
        </property>
        <property name="anstime" type="java.util.Date">
            <column name="anstime" length="0" not-null="true" />
        </property>
        <property name="status" type="java.lang.Integer">
            <column name="status" />
        </property>
        <property name="username" type="java.lang.String">
            <column name="username" length="20" />
        </property>
    </class>
</hibernate-mapping>>>>>>>>>>>>>>IQuestionDAO.javapackage org.nomic.moonforest.dao;import java.util.List;import org.nomic.moonforest.vo.Question;public interface IQuestionDAO {

// 删除问题
public void deleteQuestion(int qid) throws Exception;
}
>>>>>>>>>>>>>>>>>>>>IQuestionDAOImpl.javapackage org.nomic.moonforest.dao.impl;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;
import org.nomic.moonforest.dao.IQuestionDAO;
import org.nomic.moonforest.vo.Question;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class IQuestionDAOImpl extends HibernateDaoSupport implements
IQuestionDAO {
public void deleteQuestion(int qid) throws Exception {
Session session = super.getSession();
Question q =(Question)session.load(Question.class, qid);
session.delete(q);

}}>>>>>>>>>>>>>>>AdminquestionAction.java/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package org.nomic.moonforest.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.nomic.moonforest.dao.IQuestionDAO;
import org.nomic.moonforest.struts.form.AdminquestionForm;
import org.nomic.moonforest.util.Pager;/**
 * MyEclipse Struts Creation date: 04-21-2008
 * 
 * XDoclet definition:
 * 
 * @struts.action path="/jsp/admin/adminquestion" name="adminquestionForm"
 *                input="/jsp/errors.jsp" parameter="status" scope="request"
 *                validate="true"
 */
public class AdminquestionAction extends DispatchAction {
private IQuestionDAO iquestiondao; /*
 * Generated Methods
 */ public IQuestionDAO getIquestiondao() {
return iquestiondao;
} public void setIquestiondao(IQuestionDAO iquestiondao) {
this.iquestiondao = iquestiondao;
} /**
 * Method execute
 * 
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */

public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AdminquestionForm adminquestionForm = (AdminquestionForm) form;
int qid = Integer.parseInt(request.getParameter("qid"));

try {
this.iquestiondao.deleteQuestion(qid);
} catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("deletedo");
}
}