主从结构,列表数据展示问题

debug看到collection的数据
image
界面列表:
(1)展示数据很少
(2)鼠标滑动,下面都是空白
image

Video_20230614102625.wmv (1.4 MB)

换浏览器能正常看到吗?

换了个Edge,也是一样的

奇怪,我这边试了试,都没问题的。你们其他同事有这个问题吗?

暂时没有其他人弄这种主从的,我检查了,都正常的

是主从界面的哪个列表显示有问题?

主的列表

我又做了一个功能,结果还是一样的
image

我找到了原因,就是因为主表A对应字段a,many to one B,但是B这边的code不唯一造成的

这块底层原理是怎样的,有么有什么方案解决?

在加载A实体的时候,有没有办法确定对应的B实体呢?如果有的话,可以在A实体的loading监听里面加载对应的B实体;如果仅通过A实体没法确定,还是要通过页面逻辑,那只能在页面逻辑中手动修改dataloader的语句了。

A实体加loading监听,去重新设置正确的a,debug该方法走的次数也确实正确的数据行数,但是界面还是很少数据

你新建一个项目,看是否能重现这个问题,然后用下面这个命令打包发上来:
image

image
新建了项目,没有复现数据显示不够的问题,只是看到行数不对,但是实际显示的数据行数跟数据库一致。

jmix-pm.zip (91.6 KB)
sql.zip (1.0 KB)
您先看一下,行数不对

原因是由于dict的code不唯一,因此搜出的结果aentity同一个id的有多条,且都是code对应dict的任意值的相同记录。
如果自动分页是50条,比如aentity有30条记录,由于以上原因,对应的总结果可能有七八十条,但是第一次只加载了50条(一旦aentity第一条对应了dict的50条记录),那么这50条数据都是相同的,列表也只显示一条。
(1)在afterShow逻辑处理dc数据,但是也是只能抓出一条数据,因为id相同
(2)datamanger单独sql搜索,aentity没有重复数据了,但是manytoone的字段都是null

针对这个情况,有什么方案来处理吗?

你这些实体都是反向生成的?是不是没有办法修改数据库结构?

是的,兼容老数据。感觉只能用enum了。从数据结构上,目前的老数据模型不是很规范。

这样的情况只能自己处理页面的数据加载和展示逻辑了。需要手动加载并设置给Dc。

manytoone的字段也用datamanager加载呢?

由于主表的many to one的字段都是null。所以也没法确定manytoone对应的表的数据应该是哪些