问题我尝试使用HQL从我的数据库检索项目时遇到问题。我有两张桌子(学生和教室),我想要将所有学生和他们所属的课室一起找回。HQL查询
学生表
user_id | name | nick | password | surname | classroom_id
---------|-----------|-----------|-----------|-----------|--------------
2 | AAA | studentA | test123 | AAA | 1
3 | BBB | studentB | test321 | BBB | 1
课堂表
classroom_id | name | year
--------------|------------|----------
1 | TestClass | 2016/2017
下面是表作为的情况下,任何人都希望看到他们的Java类。
学生
@Entity
public class Student extends User{
private Class studentClass;
public Student() {
}
public Student(String name, String surname, String nick, String password, Class studentClass) {
super(name, surname, nick, password);
this.studentClass = studentClass;
}
@ManyToOne
@JoinColumn(name = "classroom_id")
public Class getStudentClass() {
return studentClass;
}
public void setStudentClass(Class studentClass) {
this.studentClass = studentClass;
}
}
课堂
@Entity
public class Classroom {
private SimpleStringProperty name = new SimpleStringProperty();
private SimpleStringProperty year = new SimpleStringProperty();
private int classroom_id;
public Classroom() {
}
public Classroom(String name, String year) {
this.name.set(name);
this.year.set(year);
}
@Column(nullable = false)
public String getName() {
return name.get();
}
public SimpleStringProperty nameProperty() {
return name;
}
public void setName(String name) {
this.name.set(name);
}
@Column(nullable = false)
public String getYear() {
return year.get();
}
public SimpleStringProperty yearProperty() {
return year;
}
public void setYear(String year) {
this.year.set(year);
}
@Id
@GenericGenerator(name="id" , strategy="increment")
@GeneratedValue(generator="id")
public int getClassroom_id() {
return classroom_id;
}
public void setClassroom_id(int classroom_id) {
this.classroom_id = classroom_id;
}
现在,这里是与查询我试图用它来获得的项目的方法。我尝试调用此方法时遇到异常。
public List<Object> getAllStudentsWithClass(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
String select = "SELECT student, classroom FROM Student student, Classroom classroom WHERE student.classroom_id = classroomm.classroom_id";
Query query = session.createQuery(select);
List<Object> list = query.list();
return list;
}
这是我得到的例外。
Exception in thread "JavaFX Application Thread" org.hibernate.QueryException: could not resolve property: classroom_id of: model.Student [SELECT student, classroom FROM model.Student student, model.Classroom classroom WHERE student.classroom_id = classroomm.classroom_id]
Caused by: org.hibernate.QueryException: could not resolve property: classroom_id of: model.Student
我感谢所有的答案和想法,谢谢。
谢谢,查询工作。 –
我还有一个问题吗?如果我只想选择具有特定类的学生(基于ID),查询将如何?我想过再次使用“where”,但那可能不起作用。 –
从学生学生中选择学生加入获取student.classroom c其中c.id ='wanted id' – aviad