我使用的是 Jmix 1.3.1。
我有一个数据库结构(我无法更改),如下所示:
我想构建一个实体选择器,用户可以在其中选择 L 列中的值之一,以便按该列过滤报告。我不希望实体选择器中显示整个表 T,只显示 L 列的不同值。
我最初的尝试是创建一个 @JmixEntity 注释类,其中仅包含我的列 L,并带有 @NamedNativeQuery 注释和 @SqlResultSetMapping 注释,其中包含像
SELECT DISTINCT L FROM T
这样的 SQL 查询,类似于我在 这个答案 中找到的内容。我不知道这是否适用于 Jmix,我只能使用 JPA 找到有关此方法的信息,而不是使用 Jmix。
我目前的尝试是有两个课程:
然后我为这些类中的第一个调整标准实体浏览器以进行查询
select distinct e.L FROM T e
。
这两种方法都会导致实体选择器打开,但没有显示数据,并且我陷入了如何调试正在发生的事情的困境。我不确定这些方法中哪一种可能有效,或者是否有另一种方法可以实现我想要的。
第一种方法应该有效。要调试加载的内容,请在列表视图中创建加载委托,然后您将能够在代码中放置断点:
@Autowired
private DataManager dataManager;
@Install(to = "usersDl", target = Target.DATA_LOADER)
private List<User> usersDlLoadDelegate(final LoadContext<User> loadContext) {
List<User> users = dataManager.loadList(loadContext);
return users;
}