Load delegate for KeyValue dataloader does not work without query

hi, as i mentioned in title the load delegate does not gets called in this simple example. the excepcion throwed said “IllegalStateException: query is null”. the datasource is a keyvaluecollection.

image

image

image

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/screen/window.xsd"
        caption="msg://editorCaption"
        focusComponent="form"
        messagesPack="com.company.caerp.web.comprobante">
    <data>
        <keyValueInstance id="lugarEntregaDc">
            <properties idProperty="id">
                <property name="id" datatype="uuid"/>
                <property name="vendedor" class="com.company.caerp.entity.Persona"/>
                <property name="cliente" class="com.company.caerp.entity.Cliente"/>
                <property name="provincia" class="com.company.caerp.entity.Provincia"/>
            </properties>
            <loader id="lugarEntregaLc"/>
        </keyValueInstance>
        <collection id="personaeDc" class="com.company.caerp.entity.Persona" view="_local">
            <loader id="personaeDl">
                <query>
                    <![CDATA[select e from caerp$Persona e ]]>
                </query>
            </loader>
        </collection>
        <collection id="clientesDc" class="com.company.caerp.entity.Cliente" view="_local">
            <loader id="clientesDl">
                <query>
                    <![CDATA[select e from caerp$Cliente e ]]>
                </query>
            </loader>
        </collection>
        <collection id="provinciasDc" class="com.company.caerp.entity.Provincia" view="_local">
            <loader id="provinciasDl">
                <query>
                    <![CDATA[select e from caerp$Provincia e ]]>
                </query>
            </loader>
        </collection>
    </data>
    <actions>
        <action id="ok"
                invoke="onOk"/>
        <action id="cancel"
                invoke="onCancel"/>
    </actions>
    <dialogMode height="400"
                width="700" forceDialog="true"/>
    <layout expand="scrollBox" spacing="true">
        <scrollBox id="scrollBox" spacing="true">
            <form id="form" dataContainer="lugarEntregaDc">
                <column width="250px">
                    <label icon="LIST" stylename="h2 bold" value="Informacion General:"/>
                    <lookupPickerField id="vendedorLEField" caption="msg://Vendedor LE"
                                       optionsContainer="personaeDc" property="vendedor">
                        <actions>
                            <action id="lookup" type="picker_lookup"/>
                            <action id="open" type="picker_open"/>
                        </actions>
                    </lookupPickerField>
                    <lookupPickerField id="clienteLEField" caption="msg://Cliente LE"
                                       optionsContainer="clientesDc" property="cliente"/>
                    <lookupPickerField id="provinciaLEField" caption="msg://Provincia LE"
                                       optionsContainer="provinciasDc" captionProperty="nombre"
                                       dataContainer="lugarEntregaDc" property="provincia"/>
                    <textField id="observacionLEField" width="342px" height="73px"
                               caption="msg://Observacion LE"/>
                </column>
            </form>
        </scrollBox>
        <hbox id="editActions" spacing="true">
            <button id="okBtn"
                    action="ok"
                    caption="mainMsg://actions.Ok"/>
            <button id="cancelBtn"
                    action="cancel"
                    caption="mainMsg://actions.Cancel"/>
        </hbox>
    </layout>
</window>

Hi,
Thank you for reporting the problem. We have created two issues:

https://youtrack.cuba-platform.com/issue/STUDIO-7907 - for Studio.
Query is mandatory for KeyValue data loader even when custom delegate is specified · Issue #2715 · cuba-platform/cuba · GitHub - for Platform.

As a workaround, you can simply add some query to lugarEntregaLc

...
<keyValueInstance id="lugarEntregaDc">
            <properties idProperty="id">
                <property name="id" datatype="uuid"/>
                <property name="vendedor" class="com.company.caerp.entity.Persona"/>
                <property name="cliente" class="com.company.caerp.entity.Cliente"/>
                <property name="provincia" class="com.company.caerp.entity.Provincia"/>
            </properties>
            <loader id="lugarEntregaLc">
                <query>
                    <![CDATA[select e from caerp$Cliente e ]]>
                </query>
            </loader>
        </keyValueInstance>
...

Regards.