servlet多重映射_关于多重映射问题,很奇怪
發表時間:2004-03-29
我說說我的情況吧!
我的表是多對多關聯!
schema如下
drop table if exists course_employee_link
drop table if exists employee
drop table if exists course
create table course_employee_link (
employee_id BIGINT not null,
course_id BIGINT not null,
primary key (course_id, employee_id)
)
create table employee (
employee_id BIGINT not null,
email VARCHAR(30),
password VARCHAR(30),
user_name VARCHAR(30),
primary key (employee_id)
)
create table course (
course_id BIGINT not null,
course_description VARCHAR(255),
course_name VARCHAR(30),
quantity INTEGER,
sign_up_quantity INTEGER,
primary key (course_id)
)
alter table course_employee_link add index (course_id), add constraint FKA34265C7575ED7BF foreign key (course_id) references course (course_id)
alter table course_employee_link add index (employee_id), add constraint FKA34265C7367BE44C foreign key (employee_id) references employee (employee_id)
具體的處理函數:
public ActionForward performSignIn(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
CourseForm courseForm = (CourseForm) form;
//get session
HttpSession httpSession = request.getSession();
//get employee
Employee employee =
(Employee) httpSession.getAttribute(IntelConstants.EMPLOYEE_KEY);
if (null == employee) {
return mapping.findForward(IntelConstants.GLOBAL_FORWARD_LOGON);
} else {
//get course
Course course =
getControl().findByPrimaryKey(courseForm.getCourseId());//getControl() return a dao object
//get employee set
Set employees = course.getEmployees();
//add employee to set
employees.add(employee);
course.setSignUpQuantity(employees.size());
//update course
if (getControl().updateCourse(course)) {
transferProperties(courseForm, course, true);
return this.performDetail(
mapping,
courseForm,
request,
response);
} else {
return mapping.findForward(IntelConstants.GLOBAL_ERROR);
}
}
}
具體的錯誤信息:
net.sf.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: 2, of class: com.edynasty.intel.employee.jdo.Employee
at net.sf.hibernate.impl.SessionImpl.checkUniqueness(SessionImpl.java:1642)
at net.sf.hibernate.impl.SessionImpl.doUpdateMutable(SessionImpl.java:1414)
at net.sf.hibernate.impl.SessionImpl.doUpdate(SessionImpl.java:1440)
at net.sf.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:1364)
at net.sf.hibernate.engine.Cascades$4.cascade(Cascades.java:114)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:436)
at net.sf.hibernate.engine.Cascades.cascadeCollection(Cascades.java:526)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:452)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:503)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:482)
at net.sf.hibernate.impl.SessionImpl.doUpdate(SessionImpl.java:1445)
at net.sf.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:1364)
at net.sf.hibernate.engine.Cascades$4.cascade(Cascades.java:114)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:436)
at net.sf.hibernate.engine.Cascades.cascadeCollection(Cascades.java:526)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:452)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:503)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:482)
at net.sf.hibernate.impl.SessionImpl.doUpdate(SessionImpl.java:1445)
at net.sf.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:1364)
at net.sf.hibernate.engine.Cascades$4.cascade(Cascades.java:114)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:436)
at net.sf.hibernate.engine.Cascades.cascadeCollection(Cascades.java:526)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:452)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:503)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:482)
at net.sf.hibernate.impl.SessionImpl.doUpdate(SessionImpl.java:1445)
at net.sf.hibernate.impl.SessionImpl.update(SessionImpl.java:1326)
at com.edynasty.intel.course.dao.impl.CourseDAOImpl.updateCourse(CourseDAOImpl.java:50)
at com.edynasty.intel.course.control.CourseControl.updateCourse(CourseControl.java:62)
at com.edynasty.intel.course.action.CourseAction.performSignIn(CourseAction.java:73)
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:324)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at com.edynasty.filter.CompressionFilter.doFilter(CompressionFilter.java:80)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:233)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
at java.lang.Thread.run(Thread.java:534)
總結
以上是生活随笔為你收集整理的servlet多重映射_关于多重映射问题,很奇怪的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cython安装ubuntu_ubunt
- 下一篇: 军训的目的和内容(军训的目的)