Я хочу заполнить столбец названием текущего семестра. Это будет называться "bezeichnung". Вместо показа семестра, я получаю направление хранения с @xyz, вы знаете. Проблема в том, что база данных имеет, например, таблицы (и в java модели для этого с геттерами и сеттерами) группировка и семестр. В сборной должны быть setSemester и getSemester, потому что я хочу добавить и удалить columnItems и необходимо выбрать семестр. Так что я должен получить семестр по ID, но я не знаю, как:
//configure the table
@FXML private TableView<Groupage> tableView;
@FXML private TableColumn<Groupage, String> IDColumn;
@FXML private TableColumn<Groupage, String> BezeichnungColumn;
@FXML private TableColumn<Groupage, Semester> SemesterColumn;
DBManager connector = new DBManager();
public void buttonAddGroupage() {
Groupage grou = new Groupage();
grou.setBezeichnung(Bezeichnung.getText());
grou.setSemester(Semesterauswahl.getValue());
connector.addGroupage(grou);
initialize(null, null);
}
public void buttonDeleteGroupage() {
Groupage grou = tableView.getSelectionModel().getSelectedItem();
connector.deleteGroupage(grou, true);
initialize(null, null);
}
public void buttonDetails() {
}
public void initialize(URL url, ResourceBundle rb) {
//set up the columns in the table
IDColumn.setCellValueFactory(new PropertyValueFactory<Groupage, String>("id"));
BezeichnungColumn.setCellValueFactory(new PropertyValueFactory<Groupage, String>("bezeichnung"));
SemesterColumn.setCellValueFactory(new PropertyValueFactory<Groupage, Semester>("semester"));
//load dummy data
tableView.setItems(getGroupage());
//Update the table to allow for the first and last name fields
//to be editable
tableView.setEditable(true);
BezeichnungColumn.setCellFactory(TextFieldTableCell.forTableColumn());
//SemesterColumn.setCellFactory(TextFieldTableCell.forTableColumn());
//This will allow the table to select multiple rows at once
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
// List<Semester> semester = connector.showSemesterAll();
// for (int i=0; i < semester.size(); i++) {
// semester.add(semester.get(i));
// }
Semesterauswahl.setItems(getSemester());
//Semesterauswahl.getItems().add(null);
}
public ObservableList<Groupage> getGroupage() {
ObservableList<Groupage> groupage = FXCollections.observableArrayList();
ArrayList<Groupage> merge = (ArrayList<Groupage>) connector.showGroupageAll();
for (int i=0; i < merge.size(); i++) {
groupage.add(merge.get(i));
}
return groupage;
}
public ObservableList<Semester> getSemester() {
ObservableList<Semester> semester = FXCollections.observableArrayList();
ArrayList<Semester> merge = (ArrayList<Semester>) connector.showSemesterAll();
for (int i=0; i < merge.size(); i++) {
semester.add(merge.get(i));
}
return semester;
}
Методы БД в H2 выглядят так:
public List<Semester> showSemesterAll() {
try {
ConnectionSource connectionSource = new
JdbcConnectionSource(DB_URL, USER, PASS);
Dao<Semester, String> semDao =
DaoManager.createDao(connectionSource, Semester.class);
List<Semester> reSemester = new ArrayList<>();
CloseableIterator<Semester> iterator = semDao.closeableIterator();
try {
while (iterator.hasNext()) {
Semester mysemcycle = iterator.next();
reSemester.add(mysemcycle);
}
} finally {
iterator.close();
}
return reSemester;
} catch (SQLException | IOException se) {
se.printStackTrace();
}
return null;
}