У меня небольшая проблема при попытке отображения данных из моей базы данных в JavaFX TableView.Проблема с JFX TableView и HQL-запросом
У меня есть таблица
user_id | name | nick | password | surname | classroom_id
---------|-----------|-----------|-----------|-----------|--------------
2 | AAA | studentA | test123 | AAA | 1
3 | BBB | studentB | test321 | BBB | 1
Эта таблица соединена с таблицей Classroom
classroom_id | classrooName | classroomYear
--------------|--------------|-------------
1 | TestClass | 2016/2017
Я использую этот запрос, чтобы получить все студенты вместе с аудиториях они принадлежат, ни один студент вопрос здесь. Когда я пытаюсь распечатать значения, все правильно.
Select student from Student student Join Fetch student.classroom
Теперь, реальная проблема в том, что classroomName и classroomYear не отображаются в TableView, как this (Jméno - Имя, Příjmení - Фамилия, Ник - Ник, Třída - название Classroom, Rok- Классный год)
значение ячейки завода для этих 2 колонки
classroomNameColumn.setCellValueFactory(new PropertyValueFactory<>("classroomName"));
classroomYearColumn.setCellValueFactory(new PropertyValueFactory<>("classroomYear"));
Теперь, единственный способ, которым я сумел получить все данные, которые будут отображаться были добавить classroomName и classroomYear мои Java классов, которые добавили их в качестве 2 дополнительные столбцы в база данных. Этот тип поражения объединяет их с id, я думаю, есть ли лучший способ получить данные о классе, отображаемые в моем TableView?
EDIT: Вот студент и класс как классы Java
@Entity
public class Student extends User{
private Classroom classroom;
public Student() {
}
public Student(String name, String surname, String nick, String password, Classroom studentClassroom) {
super(name, surname, nick, password);
this.classroom = studentClassroom;
}
@ManyToOne
@JoinColumn(name = "classroom_id")
public Classroom getClassroom() {
return classroom;
}
public void setClassroom(Classroom classroom) {
this.classroom = classroom;
}
}
@Entity
public class Classroom {
private SimpleStringProperty classroomName = new SimpleStringProperty();
private SimpleStringProperty classroomYear = new SimpleStringProperty();
private int classroom_id;
public Classroom() {
}
public Classroom(String name, String year) {
classroomName.set(name);
classroomYear.set(year);
}
@Column(nullable = false)
public String getClassroomName() {
return classroomName.get();
}
public SimpleStringProperty nameProperty() {
return classroomName;
}
public void setClassroomName(String name) {
this.classroomName.set(name);
}
@Column(nullable = false)
public String getClassroomYear() {
return classroomYear.get();
}
public SimpleStringProperty classroomYearProperty() {
return classroomYear;
}
public void setClassroomYear(String year) {
this.classroomYear.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;
}
}
Удивительный, работает как шарм. Я понял, что это потому, что в классе Student нет класса и имени, но я понятия не имел, как его написать. Большое спасибо. –