如何解决ADF输入表中基于连接VO的LOV重复值问题
解决LOV因表连接出现重复值的问题
遇到这种多表连接导致LOV选项重复的情况,我通常会从这几个实用方向入手修复,亲测有效:
给VO查询添加去重逻辑
直接在基于连接的VO的SQL语句里加上DISTINCT关键字,确保返回的键属性值唯一。比如原来的查询是:SELECT e1.id, e1.name, e2.department FROM employee e1 JOIN department e2 ON e1.dept_id = e2.id修改成:
SELECT DISTINCT e1.id, e1.name FROM employee e1 JOIN department e2 ON e1.dept_id = e2.id建议只保留LOV需要用到的字段,多余的关联字段可以去掉,既能减少数据量,也能从根源避免重复。
给VO设置唯一键属性
在VO的编辑界面,切换到「Keys」标签,把你用来做LOV键的属性(比如id)标记为唯一键(Unique Key)。ADF框架会自动基于这个设置处理重复值,确保LOV里的选项都是唯一的。用视图链接替代直接表连接
如果你的VO是直接做了表连接,不妨改成用视图链接关联EO。让LOV只从你需要键属性的主EO里取数据,关联EO的内容通过视图链接按需加载,这样就不会因为连接产生重复行。比如主VO基于employeeEO,通过视图链接关联departmentEO,LOV只查询employee的键属性,自然不会有重复。在LOV定义里直接过滤重复值
要是不想修改底层VO,也可以在LOV的设置里动手。进入LOV编辑界面的「List of Values」标签,找到「Query」部分,手动添加DISTINCT或者给需要的键属性加上GROUP BY条件,确保返回的结果集没有重复项。
内容的提问来源于stack exchange,提问作者user3395103
相关产品推荐
相关产品推荐

