UnsupportedOperationException

I have a list screen where I have used standard filter. Here is the xml file:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<view xmlns="http://jmix.io/schema/flowui/view"
      xmlns:c="http://jmix.io/schema/flowui/jpql-condition"
      title="msg://emplSeniorityLossRegisterListView.title"
      focusComponent="emplSeniorityLossRegistersDataGrid">
    <data>
        <collection id="emplSeniorityLossRegistersDc"
                    class="com.inteacc.mdg.entity.hr.EmplSeniorityLossRegister">
            <fetchPlan extends="_instance_name">
                <property name="emplProfile" fetchPlan="_instance_name">
                    <property name="name"/>
                </property>
                <property name="seniorityLossType"/>
                <property name="docNo"/>
                <property name="docDate"/>
                <property name="workingDaysLost"/>
                <property name="seniorityMonthLost"/>
            </fetchPlan>
            <loader id="emplSeniorityLossRegistersDl" readOnly="true">
                <query>
                    <![CDATA[select e from mdg_EmplSeniorityLossRegister e where e.emplProfile.company.id in :companyIdList and e.emplProfile.operatingLocation.id in :operatingLocationIdList]]>
                </query>
            </loader>
        </collection>
    </data>
    <facets>
        <dataLoadCoordinator auto="true"/>
        <urlQueryParameters>
            <genericFilter component="genericFilter"/>
            <pagination component="pagination"/>
        </urlQueryParameters>
    </facets>
    <actions>
        <action id="selectAction" type="lookup_select"/>
        <action id="discardAction" type="lookup_discard"/>
    </actions>
    <layout>
        <genericFilter id="genericFilter"
                       dataLoader="emplSeniorityLossRegistersDl">
            <properties include=".*"/>
        </genericFilter>
        <hbox id="buttonsPanel" classNames="buttons-panel">
            <simplePagination id="pagination" dataLoader="emplSeniorityLossRegistersDl"/>
        </hbox>
        <dataGrid id="emplSeniorityLossRegistersDataGrid"
                  width="100%"
                  minHeight="20em"
                  dataContainer="emplSeniorityLossRegistersDc"
                  columnReorderingAllowed="true">
            <columns resizable="true">
                <column property="emplProfile.employeeCode" autoWidth="true"/>
                <column property="emplProfile.name" autoWidth="true"/>
                <column property="seniorityLossType"/>
                <column property="docNo"/>
                <column property="docDate"/>
                <column property="workingDaysLost"/>
                <column property="seniorityMonthLost"/>
            </columns>
        </dataGrid>
        <hbox id="lookupActions" visible="false">
            <button id="selectBtn" action="selectAction"/>
            <button id="discardBtn" action="discardAction"/>
        </hbox>
    </layout>
</view>

Here is the error i get:

java.lang.UnsupportedOperationException
	at java.base/java.util.AbstractMap.put(AbstractMap.java:209)
	at io.jmix.data.impl.jpql.generator.ParameterJpqlGenerator.processParameters(ParameterJpqlGenerator.java:73)
	at io.jmix.data.impl.JpqlQueryBuilder.applyFiltering(JpqlQueryBuilder.java:268)
	at io.jmix.data.impl.JpqlQueryBuilder.buildResultQuery(JpqlQueryBuilder.java:233)
	at io.jmix.data.impl.JpqlQueryBuilder.getResultQueryString(JpqlQueryBuilder.java:171)
	at io.jmix.data.impl.JpqlQueryBuilder.getQuery(JpqlQueryBuilder.java:184)
	at io.jmix.eclipselink.impl.JpaDataStore.createQuery(JpaDataStore.java:541)
	at io.jmix.eclipselink.impl.JpaDataStore.loadAll(JpaDataStore.java:173)
	at io.jmix.core.datastore.AbstractDataStore.loadList(AbstractDataStore.java:129)
	at io.jmix.core.impl.UnconstrainedDataManagerImpl.loadList(UnconstrainedDataManagerImpl.java:112)
	at io.jmix.flowui.model.impl.CollectionLoaderImpl._load(CollectionLoaderImpl.java:118)
	at io.jmix.flowui.model.impl.CollectionLoaderImpl.load(CollectionLoaderImpl.java:100)
	at io.jmix.flowui.component.filter.SingleFilterComponentBase.apply(SingleFilterComponentBase.java:213)
	at io.jmix.flowui.component.filter.SingleFilterComponentBase.onFilterValueChanged(SingleFilterComponentBase.java:112)
	at com.vaadin.flow.component.internal.AbstractFieldSupport.lambda$addValueChangeListener$828eca10$1(AbstractFieldSupport.java:98)
	at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:239)
	at com.vaadin.flow.component.ComponentEventBus.fireEvent(ComponentEventBus.java:228)
	at com.vaadin.flow.component.Component.fireEvent(Component.java:417)
	at com.vaadin.flow.component.ComponentUtil.fireEvent(ComponentUtil.java:499)
	at com.vaadin.flow.component.internal.AbstractFieldSupport.setValue(AbstractFieldSupport.java:209)
	at com.vaadin.flow.component.internal.AbstractFieldSupport.setModelValue(AbstractFieldSupport.java:169)
	at com.vaadin.flow.component.AbstractField.setModelValue(AbstractField.java:225)
	at io.jmix.flowui.component.filter.SingleFilterComponentBase.onFieldValueChanged(SingleFilterComponentBase.java:405)
	at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:239)
	at com.vaadin.flow.component.ComponentEventBus.fireEvent(ComponentEventBus.java:228)
	at io.jmix.flowui.component.textfield.TypedTextField.fireTypedValueChangeEvent(TypedTextField.java:287)
	at io.jmix.flowui.component.textfield.TypedTextField.fireAllValueChangeEvents(TypedTextField.java:280)
	at io.jmix.flowui.component.textfield.TypedTextField.setValueInternal(TypedTextField.java:199)
	at io.jmix.flowui.component.textfield.TypedTextField.onValueChange(TypedTextField.java:317)
	at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:239)
	at com.vaadin.flow.component.ComponentEventBus.fireEvent(ComponentEventBus.java:228)
	at com.vaadin.flow.component.Component.fireEvent(Component.java:417)
	at com.vaadin.flow.component.ComponentUtil.fireEvent(ComponentUtil.java:499)
	at com.vaadin.flow.component.internal.AbstractFieldSupport.setValue(AbstractFieldSupport.java:209)
	at com.vaadin.flow.component.internal.AbstractFieldSupport.setModelValue(AbstractFieldSupport.java:169)
	at com.vaadin.flow.component.AbstractField.setModelValue(AbstractField.java:225)
	at com.vaadin.flow.component.AbstractSinglePropertyField.doSetModelValue(AbstractSinglePropertyField.java:360)
	at com.vaadin.flow.component.AbstractSinglePropertyField.handlePropertyChange(AbstractSinglePropertyField.java:352)
	at com.vaadin.flow.component.AbstractSinglePropertyField$1.propertyChange(AbstractSinglePropertyField.java:329)
	at com.vaadin.flow.internal.nodefeature.ElementPropertyMap.lambda$fireEvent$2(ElementPropertyMap.java:465)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at com.vaadin.flow.internal.nodefeature.ElementPropertyMap.fireEvent(ElementPropertyMap.java:465)
	at com.vaadin.flow.internal.nodefeature.ElementPropertyMap$PutResult.run(ElementPropertyMap.java:170)
	at com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$3(ServerRpcHandler.java:520)
	at com.vaadin.flow.server.communication.ServerRpcHandler.runMapSyncTask(ServerRpcHandler.java:536)
	at com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$5(ServerRpcHandler.java:530)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:530)
	at com.vaadin.flow.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:358)
	at com.vaadin.flow.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:137)
	at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:63)
	at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1664)
	at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:398)
	at com.vaadin.flow.spring.SpringServlet.service(SpringServlet.java:106)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:633)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:409)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:304)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:268)
	at org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:142)
	at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:178)
	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:51)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:547)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at io.jmix.core.impl.logging.LogMdcFilter.doFilterInternal(LogMdcFilter.java:28)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
	at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
	at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:151)
	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:129)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter.doFilterInternal(DefaultLogoutPageGeneratingFilter.java:58)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter.doFilter(DefaultLoginPageGeneratingFilter.java:220)
	at org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter.doFilter(DefaultLoginPageGeneratingFilter.java:206)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.authentication.ui.DefaultResourcesFilter.doFilter(DefaultResourcesFilter.java:72)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:227)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:221)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter.doFilterInternal(OAuth2AuthorizationRequestRedirectFilter.java:198)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:243)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
	at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:238)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Thread.java:840)

<![CDATA[select e from mdg_EmplSeniorityLossRegister e where e.emplProfile.company.id in :companyIdList and e.emplProfile.operatingLocation.id in :operatingLocationIdList]]`>

In a brief look I dont see companyIdList and operatingLocationIdList ?

Perhaps it helps ;/

This parameters are passed from the controller.

Could you provide Java code that sets the loader parameters?

Here it is:

package com.inteacc.mdg.view.hr.emplsenioritylossregister;



@Route(value = "emplSeniorityLossRegisters", layout = DefaultMainViewParent.class)
@ViewController("mdg_EmplSeniorityLossRegister.list")
@ViewDescriptor("empl-seniority-loss-register-list-view.xml")
@LookupComponent("emplSeniorityLossRegistersDataGrid")
@DialogMode(width = "64em")
public class EmplSeniorityLossRegisterListView extends StandardListView<EmplSeniorityLossRegister> {


    private static final Logger log = LoggerFactory.getLogger(EmplSeniorityLossRegisterListView.class);
    @Autowired
    private InteaccMDGGeneralBean inteaccMDGGeneralBean;
    @ViewComponent
    private CollectionLoader<EmplSeniorityLossRegister> emplSeniorityLossRegistersDl;
    @Autowired
    private SessionData sessionData;
    protected String userType;
    @Autowired
    private DataManager dataManager;

    @Override
    public void beforeEnter(BeforeEnterEvent event) {
        Map<String, List<String>> parameters = event.getLocation().getQueryParameters().getParameters();
        if (parameters.containsKey("userType")) {
            parameters.get("userType").stream()
                    .findAny()
                    .ifPresent(this::setUserType);
        }
        super.beforeEnter(event);
    }

    public void setUserType(String userType) {
        this.userType = userType;
    }

    @Subscribe
    public void onQueryParametersChange(View.QueryParametersChangeEvent event) {
        QueryParameters queryParameters = event.getQueryParameters();

        // Extract userType from query parameters
        String newUserType = queryParameters.getParameters().getOrDefault("userType", List.of()).stream()
                .findFirst()
                .orElse(null);

        if (newUserType != null) {
            userType = newUserType;
        }

        emplSeniorityLossRegistersDl.setQuery(null);

        // Reload data with the updated userType
        loadListData();
    }


    @Subscribe
    public void onBeforeShow(final BeforeShowEvent event) {

        //     <![CDATA[select e from mdg_EmplSeniorityLossRegister e where e.company.id in :companyIdList and e.operatingLocation.id in :operatingLocationIdList]]>
        loadListData();
    }


    private void loadListData(){
        if(userType.equalsIgnoreCase("hr")) {
            emplSeniorityLossRegistersDl.removeParameter("emplId");
            emplSeniorityLossRegistersDl.removeParameter("employeeIdList");

            List<UUID> companyIdList = inteaccMDGGeneralBean.getCompanyIdListAuthorized();
            List<UUID> operatingLocationIdList = inteaccMDGGeneralBean.getOperatingLocIdListAuthorized();
            emplSeniorityLossRegistersDl.setParameters(ParamsMap.of("companyIdList", companyIdList, "operatingLocationIdList", operatingLocationIdList));
            emplSeniorityLossRegistersDl.load();

        }else if(userType.equalsIgnoreCase("supervisor")) {

            emplSeniorityLossRegistersDl.removeParameter("emplId");
            emplSeniorityLossRegistersDl.removeParameter("companyIdList");
            emplSeniorityLossRegistersDl.removeParameter("operatingLocationIdList");

            UUID emplId = (UUID) sessionData.getAttribute("emplProfileId");
            //Supervisor: Controlled by Row level roles as supervisor: Use row level role as supervisor
            final List<UUID> employeeIdList = dataManager.load(EmplProfile.class)
                    .query("select e from mdg_EmplProfile e " +
                            "where e.manager.id = :managerId1")
                    .parameter("managerId1", emplId)
                    .maxResults(500)
                    .list()
                    .stream()
                    .map(EmplProfile::getId) // Extract ID from each EmployeeProfile
                    .toList();
//log.info("employees count "+employeeIdList.size());
            emplSeniorityLossRegistersDl.setQuery("select e from mdg_EmplSeniorityLossRegister e where e.emplProfile.id in :employeeIdList");
            emplSeniorityLossRegistersDl.setParameter("employeeIdList", employeeIdList);
            emplSeniorityLossRegistersDl.load();

        }else{  //employee
            emplSeniorityLossRegistersDl.removeParameter("managerId1");
            emplSeniorityLossRegistersDl.removeParameter("employeeIdList");
            emplSeniorityLossRegistersDl.removeParameter("companyIdList");
            emplSeniorityLossRegistersDl.removeParameter("operatingLocationIdList");

            UUID emplId = (UUID) sessionData.getAttribute("emplProfileId");
            emplSeniorityLossRegistersDl.setQuery("select a from mdg_EmplSeniorityLossRegister a where a.emplProfile.id = :emplId");
            emplSeniorityLossRegistersDl.setParameter("emplId", emplId);
            emplSeniorityLossRegistersDl.load();
        }
    }

    @Override
    public String getPageTitle() {
        String yourPageTitle = userType==null? null : userType.equalsIgnoreCase("hr") ? "Seniority Loss Register - HR" : userType.equalsIgnoreCase("supervisor") ? "Seniority Loss Register - Supervisor" : "Seniority Loss Register - Self";
        return Strings.isNullOrEmpty(yourPageTitle)
                ? super.getPageTitle()
                : yourPageTitle;
    }

}

Cannot reproduce the problem.
Could you set the breakpoint into io.jmix.data.impl.jpql.generator.ParameterJpqlGenerator#processParameters and watch the types of parameters and queryParameters variables?

image

Didn’t find any clue!

<layout>
        <propertyFilter dataLoader="emplSeniorityLossRegistersDl"
                        operation="CONTAINS"
                        property="emplProfile.employeeCode"
                        operationEditable="true"/>
        <hbox id="buttonsPanel" classNames="buttons-panel">
            <simplePagination id="pagination" dataLoader="emplSeniorityLossRegistersDl"/>
        </hbox>
        <dataGrid id="emplSeniorityLossRegistersDataGrid"
                  width="100%"
                  minHeight="20em"
                  dataContainer="emplSeniorityLossRegistersDc"
                  columnReorderingAllowed="true">
            <columns resizable="true">
                <column property="emplProfile.employeeCode" autoWidth="true"/>
                <column property="emplProfile.name" autoWidth="true"/>
                <column property="seniorityLossType"/>
                <column property="docNo"/>
                <column property="docDate"/>
                <column property="workingDaysLost"/>
                <column property="seniorityMonthLost"/>
            </columns>
        </dataGrid>
        <hbox id="lookupActions" visible="false">
            <button id="selectBtn" action="selectAction"/>
            <button id="discardBtn" action="discardAction"/>
        </hbox>
    </layout>

I have also tried property filer but same error

It will be helpful for investigation if you could follow my previous instructions and provide a screenshot similar to mine.

Here is the screen-shot.

image

Thank you for the provided information. I’ve managed to reproduce the problem.

To fix it in your view, try to replace emplSeniorityLossRegistersDl.setQuery(null) with setting a default query like emplSeniorityLossRegistersDl.setQuery("select e from mdg_EmplSeniorityLossRegister e").

Created issue to fix the cause in the framework: UnsupportedOperationException when loading data with empty query, a condition, and an empty list of parameters · Issue #4368 · jmix-framework/jmix

Regards,
Konstantin

1 Like

Thank you Konstantin.