代码之家  ›  专栏  ›  技术社区  ›  Salahuddin Shayan

在Hibernate中尝试连接查询时获取ClassCastException

  •  0
  • Salahuddin Shayan  · 技术社区  · 2 年前

    这是我的桌子:

    @Entity
    

    @表(name=“Students”) 公立班学生{

    @Id
    @Column(name="Student_ID")
    private int id;
    
    @Column(name="Student_Name")
    private String name;
    
    @Column(name="Email_ID")
    private String emailId;
    
    @Column(name="Phone_no")
    private long phoneNo;
    
    @Column(name="Class_ID")
    private int classId;
    
    @Column(name="DOB")
    private Date dob;
    

    @实体
    

    @表(名称=“已分配”)

    @Id
    @Column(name="Assign_ID")
    private int aId;
    
    @Column(name="Class_ID")
    private int classId;
    
    @Column(name="Teacher_ID")
    private int tId;
    
    @Column(name="Subject_ID")
    private int sId;
    

    PrintWriter out = response.getWriter();
        out.append("<html><body>");
    
        SessionFactory sf = HibernateUtil.getSessionFactory();
    
        Session session = sf.openSession();
        
        List<Subjects> subjects = session.createQuery(" from Subjects").list();
        
        out.println("<h1> Students List :-");
        out.println("<table>");
        
        out.println("<tr>");
        out.println("<th> Subject Id </th>");
        out.println("<th> Subject Name </th>");
        out.println("</tr>");
        
        for(Subjects subject : subjects ) {
            out.println("<tr>");
            out.println("<td>"+subject.getsId()+"</td>");
            out.println("<td>"+subject.getsName()+"</td>");
            out.println("</tr>");
        }
        out.println("</table>");
        out.append("</body></html>");
    

    它工作得很好,但当我试着运行它时:

    PrintWriter out = response.getWriter();
        out.append("<html><body>");
    
        SessionFactory sf = HibernateUtil.getSessionFactory();
    
        Session session = sf.openSession();
        
        List<Subjects> subjects = session.createQuery("from Subjects s, Assign a where s.sId = a.sId and a.classId = 2").list();
        
        out.println("<h1> Students List :-");
        out.println("<table>");
        
        out.println("<tr>");
        out.println("<th> Subject Id </th>");
        out.println("<th> Subject Name </th>");
        out.println("</tr>");
        
        for(Subjects subject : subjects ) {
            out.println("<tr>");
            out.println("<td>"+subject.getsId()+"</td>");
            out.println("<td>"+subject.getsName()+"</td>");
            out.println("</tr>");
        }
        out.println("</table>");
        out.append("</body></html>");
    

    它给出了以下错误:

    我在这里读到的时候没有做@manytone注释( How to make this select * from two joined tables query in HQL form? )你也可以在没有他们的情况下工作。

    我试过各种各样的东西,但都没有用。有人能告诉我为什么会发生这种情况,以及如何解决这个问题吗?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Shervin Zadsoroor    2 年前

    List<Subjects> subjects = 
    session.createQuery(
              "select s from Subjects s, Assign a where s.sId = a.sId and 
               a.classId = 2", Subjects.class).list();