Oracle Apex 24.2级联LOV报错:Ajax请求模型清除及元数据/重复ID问题
Oracle Apex 24.2.0级联多列LOV报错:Model cleared/metadata错误
问题描述
我在Oracle Apex 24.2.0中搭建了一个级联LOV:父控件为选择列表,子LOV基于多列LOV实现。选择父项值后,打开子LOV时触发两个错误:
Model cleared during ajax requestModel: incorrect metadata or duplicate record id detected
子LOV查询(共享组件定义)
SELECT ORDER_NUMBER, DIVISION, demand_no, SHADE_ID, shad_name, DESCRIPTION, ORDERED_QUANTITY, HEADER_ID , LINE_ID, LINE_NUMBER, inventory_item_id, GREIGE_ORDER_QTY_MTR, GREIGE_ORDER_QTY_MTR_TOL, ORDER_TYPE FROM XX_OE_LOV1_t WHERE e_type = :P15_PO_TYPE
子LOV配置细节
- 作为子LOV的
batcher_id列已配置对应附加列 - 子LOV的附加输出配置如下:
ORDER_NUMBER:P15_BATCHER_ID,DIVISION:P15_DIV,DEMAND_NO:P15_GR_DMD_ID,SHADE_ID:P15_SHADE_ID,SHAD_NAME:P15_SHADE_NAME,DESCRIPTION:P15_CONSTRUCTION,ORDERED_QUANTITY:P15_ACTUAL_LENGTH,HEADER_ID:P15_HEADER_ID,LINE_ID:P15_LINE_ID,LINE_NUMBER:P15_LINE_NUMBER,INVENTORY_ITEM_ID:P15_INVENTORY_ITEM_ID,GREIGE_ORDER_QTY_MTR:P15_GREIGE_ORDER_QTY_MTR,GREIGE_ORDER_QTY_MTR_TOL:P15_GREIGE_ORDER_QTY_MTR_TOL,ORDER_TYPE:P15_ORDER_TYPE
父选择列表已关联P15_PO_TYPE参数。
解决方案
- 确保子LOV有唯一标识列
多列LOV必须有唯一的返回值列,Apex靠它识别每条记录。当前查询没有明确指定唯一键,大概率是返回的记录存在重复的LINE_ID或HEADER_ID+LINE_ID组合。
- 修改LOV配置,将
LINE_ID设为返回值列(订单行ID通常是唯一的) - 检查
XX_OE_LOV1_t表数据,若存在重复行,在查询中添加DISTINCT或通过WHERE条件过滤重复
修正附加输出的映射逻辑
附加输出中ORDER_NUMBER:P15_BATCHER_ID的映射存在问题:batcher_id作为子LOV的绑定列,应该对应LOV的唯一返回值列(比如LINE_ID),而非ORDER_NUMBER。这种错误会导致Apex无法维护模型状态,触发"Model cleared"错误。调整映射,让绑定列对应正确的唯一标识列。验证父参数传递有效性
开启页面调试模式,查看AJAX请求中P15_PO_TYPE参数是否正确传递。若参数为空或值异常,会导致查询返回不符合预期的数据,进而触发元数据错误。核对附加列与查询列的一致性
进入共享组件的子LOV配置页,确认"附加列"的名称、顺序与查询返回的列完全匹配(注意大小写,Apex对列名大小写敏感)。若存在不匹配,会导致元数据识别错误。
内容的提问来源于stack exchange,提问作者usman newton
相关产品推荐
相关产品推荐

