名字是法语
......................
少尉=老师
Matiere = 主题
名义=姓氏
prenom = 名字
............
我使用带有 FXML 的 javafx 2 和使用 MVC 模式的 hibernate, 我想在TableView中显示“Enseignant”列表
tableView结构:
<TableView fx:id="tableau" >
<columns>
<TableColumn fx:id="ID" prefWidth="43.0" text="ID" />
<TableColumn fx:id="NOM" prefWidth="95.0" text="NOM" />
<TableColumn fx:id="PRENOM" prefWidth="94.0" text="PRENOM" />
<TableColumn fx:id="MATIERE" prefWidth="97.0" text="Matière" />
</columns>
</TableView>
在数据库中我有 2 个表:
Enseignant(ID, #idMatiere, nom, prenom)
Matiere(IDMatiere, intitule)
<小时/>
每个表将被hibernate用作类
少尉:
public class Enseignant implements java.io.Serializable {
private Integer idEnseignant;
private Matiere matiere;
private String nom;
private String prenom;
Material :
public class Matiere implements java.io.Serializable {
private int idMatiere;
private String intitule;
“Enseignant”的 Controller 有一个方法“show()”,它显示教师列表
ID.setCellValueFactory(new PropertyValueFactory<Enseignant, Integer>("idEnseignant"));
NOM.setCellValueFactory(new PropertyValueFactory<Enseignant, String>("nom"));
PRENOM.setCellValueFactory(new PropertyValueFactory<Enseignant, String>("prenom"));
MATIERE.setCellValueFactory(new PropertyValueFactory<Enseignant, String>("matiere"));
tableau.setItems(em.getEnseignant());
最后,它显示列表正常,但“matiere”列引用对象,例如:hibernate.Matiere@59456543
最佳答案
在这种情况下你必须改变
MATIERE.setCellValueFactory(new PropertyValueFactory<Enseignant, String>("matiere"));
至
MATIERE.setCellValueFactory(new Callback<CellDataFeatures<Enseignant,String>,ObservableValue<String>>(){
@Override
public ObservableValue<String> call(CellDataFeatures<Enseignant, String> param) {
return new SimpleStringProperty(param.getValue().getMatiere().getIntitule());
}
});
关于java - 在javafx TableView中显示外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33722070/