名字是法语
...................
Enseignant =老师
Matiere =主题
nom = lastName
prenom = firstName
..............
我使用带有FXML的javafx 2和使用MVC模式的hibernate, 我想显示" Enseignant"在TableView中
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用作类
Enseignant:
public class Enseignant implements java.io.Serializable {
private Integer idEnseignant;
private Matiere matiere;
private String nom;
private String prenom;
Matiere:
public class Matiere implements java.io.Serializable {
private int idMatiere;
private String intitule;
&#34; Enseignant&#34;的控制者有一个方法&#34; show()&#34;它显示教师名单
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());
最后,它显示了正常的列表,但是&#34; matiere&#34;列引用对象,例如:hibernate.Matiere@59456543
答案 0 :(得分:0)
在这种情况下,您必须更改
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());
}
});