在 javafx TableView 中显示外键
display foreign key in javafx TableView
名字是法语
......................
少校 = 老师
Matiere = 主题
名字 = 姓氏
prenom = firstName
.......
我使用带有 FXML 的 javafx 2 和使用 MVC 模式的休眠,
我想在 TableView
中显示 "Enseignant" 的列表
table视图结构:
<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)
每个 table 将被休眠用作 class
少校:
public class Enseignant implements java.io.Serializable {
private Integer idEnseignant;
private Matiere matiere;
private String nom;
private String prenom;
马蒂埃:
public class Matiere implements java.io.Serializable {
private int idMatiere;
private String intitule;
"Enseignant" 的控制器有一个方法"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());
}
});
名字是法语
......................
少校 = 老师
Matiere = 主题
名字 = 姓氏
prenom = firstName
.......
我使用带有 FXML 的 javafx 2 和使用 MVC 模式的休眠, 我想在 TableView
中显示 "Enseignant" 的列表table视图结构:
<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)
每个 table 将被休眠用作 class
少校:
public class Enseignant implements java.io.Serializable {
private Integer idEnseignant;
private Matiere matiere;
private String nom;
private String prenom;
马蒂埃:
public class Matiere implements java.io.Serializable {
private int idMatiere;
private String intitule;
"Enseignant" 的控制器有一个方法"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());
}
});