在javafx中显示外键TableView

时间:2015-11-15 16:34:16

标签: java hibernate javafx foreign-keys tableview

名字是法语

...................

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

1 个答案:

答案 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());
                }
            });