使用 TornadoFX 时,TableView 列的建立方式如下:
tableview(list<ObjectType>) {
column("ColumnName", ObjectType::property)
...
}
这通常很好,但在我的情况下,我使用的是 Kotlin Exposed 实体,该实体使用对另一个实体的引用。发生这种情况时,如果您想使用该引用,则必须将其包围在事务中。
例子:
val company = transaction { employeeObject.companyObject }
如果您不在事务中包装这样的调用,则会引发错误。似乎没有一种明显的方法来覆盖列访问属性的方式,所以我想知道它是否存在。
现在,我已经尝试将我的实体包装在另一个类中,该类会预先完成所有必要的事务,但是当需要映射的实体数量达到数千时,它会导致我的程序基本上进入停滞状态. 如果需要,我可以回到以前的状态,即没有参考,而只是另一个实体的普通旧 ID 号。然后,该列的单元格格式将尝试将公司与之前抓取的列表中的所有公司进行匹配。虽然我不太喜欢那个解决方案,它看起来更丑也不优雅,但它比映射实体快得多。我想要实现的目标也有可能导致其自身的放缓。我只是想知道这是否可能,所以我至少可以看到它有多快。