带有 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 的字段,但是想法是一样的)。
我正在尝试使用 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 的字段,但是想法是一样的)。