我正在尝试在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();
}
}
答案 0 :(得分:2)
您的别名是sc
,您的列名是user_id
,所以它应该是
"from Student_Course as sc where sc.user_id=?"
代替。