带有HIbernate的JavaFX TableView

时间:2015-08-12 18:21:59

标签: hibernate javafx tableview tablecolumn

我正在尝试使用Hibernate开发JavaFX桌面应用程序。 在我的数据模型中,我有两个实体(播放器,团队)。每个玩家都属于一个团队。

播放器

id:int firstName:String lastName:String ref_Team:int

团队

id:int 名称:字符串

在我的应用程序中,我每个实体目前有两个表,一切运行良好。但是现在我想更进一步,在TableView for Team-Entity中我打算添加一个列" Players Count"。

我知道如何绑定TableColumn,例如 firstNameCol.setCellValueFactory((data) - > data.getValue()。firstNameProperty());

但在我的团队实体中,没有计算玩家数量的属性。 任何想法如何绑定numberOfPlayerCol?

1 个答案:

答案 0 :(得分:2)

假设你有一个ObservableList<Player>所有玩家,你可以做类似

的事情
ObservableList<Player> allPlayers = ... ;

TableView<Team> table = new TableView<>();

TableColumn<Team, Number> playerCountCol = new TableColumn<>("Players count");
playerCountCol.setCellValueFactory(cellData -> 
    Bindings.createLongBinding(() -> 
        allPlayers.stream()
        .filter(player -> player.getTeamId() == cellData.getValue().getId())
        .collect(Collectors.counting()),
        allPlayers));

这是一种相当强力的方法,可以随时根据需要计算所有内容。如果遇到性能问题,您可能需要做一些更复杂的事情。不过,这应适用于适度大小的数据集。

以下是指向quick example的链接(Player此处有Team的直接引用,而不是与其ID匹配的字段,但想法是相同的。)< / p>