我在使用Jmix 1.3.1版本。
我的数据库结构(无法更改)如下:
有一个包含多个列的大表,我将其称为表T。 其中一列(字符串类型),我将它称为列L,是我唯一关心的。这一列有若干不同的值。 我想构建一个实体选择器,用户可以从列L中选择一个值,以便按该列过滤报告。我不希望实体选择器中显示整个表T,只希望显示列L的不同值。
我最初的尝试是创建一个带有@JmixEntity注解的类,并且仅包含列L,同时使用@NamedNativeQuery注解和一个包含类似SELECT DISTINCT L FROM T SQL查询的@SqlResultSetMapping注解,这个思路类似于我在某个答案中找到的示例。但我不清楚这是否在Jmix中能正常工作,因为我只能找到关于这种做法与JPA相关的资料,而找不到与Jmix相关的。
我目前的尝试是定义两个类:
一个类按照其他任何表示完整表T的类那样,使用@JmixEntity、@Table、@Entity和@Store注解,但仅包含ID字段和列L字段。 另一个类仅使用@JmixEntity注解,且仅包含列L,同时用作@InstanceName和@Id。 然后,我对第一个类的标准实体浏览器进行调整,使其查询语句变为select distinct e.L FROM T e。
这两种方法都能使实体选择器打开,但没有数据显示,目前我卡在这一步,不知道如何调试问题所在。我不确定上述哪种方法可能有效,或者是否存在另一种实现我所需功能的方法。