带有 HIbernate 的 JavaFX TableView

JavaFX TableView with HIbernate

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

玩家

编号:整数 名字:字符串 姓氏:字符串 ref_Team : 整数

团队

编号:整数 名称:字符串

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

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

但是在我的团队实体中,没有 属性 来计算球员。 关于如何绑定 numberOfPlayerCol 有什么想法吗?

假设你有一个 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));

这是一种相当蛮力的方法,它只在需要时计算所有内容。如果您 运行 陷入性能问题,您可能需要做一些更复杂的事情。不过,这应该适用于适度大小的数据集。

这里是 link 到 quick example(这里的 Player 直接引用了 Team,而不是匹配其 id 的字段,但是想法是一样的)。