在Hibernate查询中获取错误。错误:org.hibernate.hql.ast.QuerySyntaxException

时间:2014-07-23 17:29:28

标签: java mysql hibernate hql

我正在尝试在SpringMvc模型类中实现多对一关系。但我无法找到任何能够理解这项工作的例子。

return (Student_Course) session.getCurrentSession().createQuery("from Student_Course as sc where c.user.id=?").setInteger(0, user_id).uniqueResult()

在上面的代码中,我试图通过hibernate查询从数据库中检索Student_Course表,但它给了我这个错误。

错误

org.hibernate.hql.ast.QuerySyntaxException: Invalid path: 'c.user.id' [from com.sanjay31321.sys.model.Student_Course as sc where c.user.id=?]

有没有其他方法可以编写这个hql查询,所以我可以得到这个表。请帮帮我。

课程分类:

@Entity @Table (name="Course")
public class Course {
    @Id @Column @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;

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

    //Setter and Getter
}

Student_Course课程:

@Entity @Table (name="Student_course")
public class Student_Course {

    @Id @Column @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;

    @ManyToOne @JoinColumn(name="user_id")
    private User user;

    @ManyToOne @JoinColumn(name="course_id")
    private Course course;

    //Setter and Getter
}

用户类:

@Entity @Table (name="user")
public class User {

    @Id @Column @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;

    @Column(name="email")  @Email
    private String email;

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

    //Setter and Getter
}

StudentCourseDaoImpl Class

@Repository
public class StudentCourseDaoImpl implements StudentCourseDao{

    @Autowired private SessionFactory session;

    @Override
    public Student_Course getStudentCourseByUserID(int user_id) {
        return (Student_Course) session.getCurrentSession().createQuery("from Student_Course as sc where c.user.id=?").setInteger(0, user_id).uniqueResult();
    }

}

1 个答案:

答案 0 :(得分:2)

您的别名是sc,您的列名是user_id,所以它应该是

"from Student_Course as sc where sc.user_id=?"

代替。