Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用hibernate从多表查询中获取数据?_Java_Hibernate_Spring Mvc - Fatal编程技术网

Java 如何使用hibernate从多表查询中获取数据?

Java 如何使用hibernate从多表查询中获取数据?,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,我正在使用Spring和Hibernate开发一个简单的应用程序。IDE:Eclipse 我想展示一下学生的时间表 时间表使用学生表、科目表、考试表和班级表 课程表包括:学生姓名、卷号、科目、班级、考试、时间、截止时间和日期 我已经编写了一个查询works with>1表,该表将返回一条记录,该记录将显示为schedule 查询没有问题我已经在控制台上打印了对象 当从控制器发送的列表中检索记录时,我在我的.jsp上收到一个NumberFormatException 1从jsp上的列表中检索多个表

我正在使用Spring和Hibernate开发一个简单的应用程序。IDE:Eclipse

我想展示一下学生的时间表

时间表使用学生表、科目表、考试表和班级表

课程表包括:学生姓名、卷号、科目、班级、考试、时间、截止时间和日期

我已经编写了一个查询works with>1表,该表将返回一条记录,该记录将显示为schedule

查询没有问题我已经在控制台上打印了对象

当从控制器发送的列表中检索记录时,我在我的.jsp上收到一个NumberFormatException

1从jsp上的列表中检索多个表值是否正确??如果这个方法不对,请建议正确的方法

2以下代码任何部分的任何其他变更,能够满足我的需求

3做同样事情的其他方法

例外情况:

阶级

考试

主题

@Entity
@Table(name="subject")
public class Subject {

    @Id
    @GeneratedValue

    @Column(name="id")
    private int id;

    @Column(name="subjectname")
    private String subjectname;

    @ManyToOne
    private Classs classs;

            Getters & Setters.....
}
在Controller中,我编写了如下代码:

@RequestMapping(value="schedule" ,method=RequestMethod.GET)
public ModelAndView schedule(@ModelAttribute("attribute") Student student,BindingResult result,HttpSession session)throws Exception
{
    int roll=Integer.parseInt((String) session.getAttribute("username"));
    System.out.println("roll no is========="+roll);
    List<Student> stud = adminstudentdao.getStudentSchedule(roll);
    System.out.println("list is========="+stud);
    ModelMap map=new ModelMap();
    map.addAttribute("scheduleList",stud);
    return new ModelAndView("studentschedule",map);
}
Jsp:


我建议您使用Hibernate原生SQL。为此,您可以将AdminStudentDaoImpl.java修改为:

public List getStudentSchedule(int a) {
     Session sessionHb = session.openSession();
     String sql = "select stud.firstname,stud.roll,sub.subjectname,cls.classname,exam.exam_name,exam.from_time,exam.to_time,exam.exam_date from Student stud,Subject sub,Classs cls,Exam exam where exam.classs=cls.id and exam.subject=sub.id and sub.classs=cls.id and stud.classs=cls.id and stud.roll= :roll";
     SQLQuery query = sessionHb.createSQLQuery(sql);
     query.setParameter("roll", a);
     query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
     return query.list();
}

我希望它能有所帮助:

如何迭代此方法返回的列表??如本列表所示,存在多个实体。
@Entity
@Table(name="class")

public class Classs {

@Id
@GeneratedValue
@Column(name="id")
private int id;
    @Column(name="classname")
private String classname;
    Getters & Setters.....
}
@Entity
@Table(name="exam")
public class Exam {

@Id
@GeneratedValue
@Column(name="id")
private int id;
@Column(name="exam_name")
private String exam_name;

@Column(name="exam_date")
private String exam_date;

@Column(name="from_time")
private String from_time;

@Column(name="to_time")
private String to_time;

@ManyToOne
private Subject subject;

@ManyToOne
private Classs classs;

    Getters & Setters.....
}
@Entity
@Table(name="subject")
public class Subject {

    @Id
    @GeneratedValue

    @Column(name="id")
    private int id;

    @Column(name="subjectname")
    private String subjectname;

    @ManyToOne
    private Classs classs;

            Getters & Setters.....
}
@RequestMapping(value="schedule" ,method=RequestMethod.GET)
public ModelAndView schedule(@ModelAttribute("attribute") Student student,BindingResult result,HttpSession session)throws Exception
{
    int roll=Integer.parseInt((String) session.getAttribute("username"));
    System.out.println("roll no is========="+roll);
    List<Student> stud = adminstudentdao.getStudentSchedule(roll);
    System.out.println("list is========="+stud);
    ModelMap map=new ModelMap();
    map.addAttribute("scheduleList",stud);
    return new ModelAndView("studentschedule",map);
}
<table border="0" width="100%" cellpadding="0" cellspacing="0" id="schedule-table">
            <tr>

                <th class="table-header-repeat line-left minwidth-1"><a href="">Student name</th>
                <th class="table-header-repeat line-left minwidth-1"><a href="">Roll number</th>
                <th class="table-header-repeat line-left minwidth-1"><a href="">Subject</th>
                <th class="table-header-repeat line-left minwidth-1"><a href="">Class</th>
                <th class="table-header-repeat line-left minwidth-1"><a href="">exam</a></th>
                <th class="table-header-repeat line-left minwidth-1"><a href="">from time</th>
                <th class="table-header-repeat line-left minwidth-1"><a href="">to time</th>
                <th class="table-header-repeat line-left minwidth-1"><a href="">date</th>

            </tr>
             <c:if test="${empty scheduleList}">
                   <tr>
                         <td colspan="8"><b>No Results found</b></td>
                   </tr>
             </c:if>
            <c:forEach items="${scheduleList}" var="var">
            <tr>
                <td><b>${var.firstname }</b></td>
                <td><b>${var.roll }</b></td>
                <td><b>${var.subjectname }</b></td>
                <td><b>${var.classname }</b></td>
                <td><b>${var.exam_name }</b></td>
                <td><b>${var.from_time }</b></td>
                <td><b>${var.to_time }</b></td>
                <td><b>${var.exam_date }</b></td>


            </tr>
            </c:forEach>

            </table>
public List getStudentSchedule(int a) {
     Session sessionHb = session.openSession();
     String sql = "select stud.firstname,stud.roll,sub.subjectname,cls.classname,exam.exam_name,exam.from_time,exam.to_time,exam.exam_date from Student stud,Subject sub,Classs cls,Exam exam where exam.classs=cls.id and exam.subject=sub.id and sub.classs=cls.id and stud.classs=cls.id and stud.roll= :roll";
     SQLQuery query = sessionHb.createSQLQuery(sql);
     query.setParameter("roll", a);
     query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
     return query.list();
}