public String createExam(HttpServletRequest request, Model model) throws Exception {
QuestionBankService questionbankService = (QuestionBankService) context.getBean("fetchQuestion");
HttpSession session = request.getSession(true);
SessionFactory sessionfactory = new Configuration().configure().buildSessionFactory();
Session sessions = sessionFactory.getCurrentSession();
String examId = request.getParameter("examid");
String examName = request.getParameter("examname");
String examDate = request.getParameter("examdate");
String examDuration = request.getParameter("examduration");
现在,当我尝试在SessionFactory sessionfactory = new Configuration()。configure()。buildSessionFactory();中运行此代码时,我收到以下错误。
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: org.iitb.exam.main.dto.Exam.questionBank[org.iitb.exam.main.dto.QuestionBank]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
根本原因
org.hibernate.AnnotationException:使用@OneToMany或@ManyToMany定位未映射的类:org.iitb.exam.main.dto.Exam.questionBank [org.iitb.exam.main.dto.QuestionBank] org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1185) org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:710) org.hibernate.cfg.annotations.CollectionBinder $ 1.secondPass(CollectionBinder.java:645) org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:65) org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1716) org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1423) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1856) org.iitb.exam.main.formcontrollers.ExamCreatedFormController.createExam(ExamCreatedFormController.java:60) sun.reflect.NativeMethodAccessorImpl.invoke0(原生方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:616) org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
我无法理解我做错了什么。我开始知道与QuestionBand相关的Exam.java有问题,编写的代码如下:
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(name = "QuestionBank_Exam_Mapping",
joinColumns = { @JoinColumn(name = "examid")},
inverseJoinColumns = { @JoinColumn(name = "questionid") })
private Set<QuestionBank> questionBank = new HashSet<QuestionBank>();
我想通过向用户提供用户界面来创建仅考试条目,在那里他将输入一些必要的参数,如考试名称,考试日期,考试持续时间等。 还有一个依赖项,我必须再次使用advt_exam_post表mappin中的examid为考试创建一个条目。我已经在会议中提出了建议,因此我可以在该表中输入。我的困惑是为什么它会向我显示问题库的错误。在问题库和考试表映射中,与examid和questionid存在依赖关系,仅当用户为特定考试选择特定问题时才会填写。
现在请让我知道我在哪里做了一些错误的事情,并在我的代码中造成混乱。在调试程序中浪费了大量的时间:(
答案 0 :(得分:0)
错误表明QuestionBank
不是实体。如果它不是实体,您应该将其设为一个或映射到不同的类型。
Use of @OneToMany or @ManyToMany targeting an unmapped class: org.iitb.exam.main.dto.Exam.questionBank
包名称'dto'表明该类型不是一个实体。也许你期待那里有另一种类型,比如org.iitb.exam.main.domain.exam.QuestionBank
,所以你也应该检查你的DTO和实体具有相同类型名称的导入。在这种情况下,由于混淆的可能性,不鼓励使用相同的类型名称。